|   |   | 
| 
 | прошу подсказать с API запросом | ☑ | ||
|---|---|---|---|---|
| 0
    
        Tarlich 27.09.24✎ 11:39 | 
        Понимаю что вопрос пустяковый 
 в постмене работает - как сделать 1С ? надо авторизироваться и получить токен - дальше уверен разберусь Есть сайт адрес, "/Auth" , логин, пароль - ответом будет токен 1 пробовал так //httpRequest = СоздатьОбъект("MSXML2.xmlhttp"); //httpRequest.open("POST", "https://pharmapi.apteka.ru" ,0); //httpRequest.setRequestHeader("Content-Type", "text/xml"); //httpRequest.setRequestHeader("login", Логин); //httpRequest.setRequestHeader("password", Пароль); //ОтветСервера = httpRequest.responseText; //Сообщить(ОтветСервера); 2 - пробовал так Соединение = Новый HTTPСоединение("https://pharmapi.apteka.ru"); Запрос = Новый HTTPЗапрос; Запрос.АдресРесурса = "/Auth"; Тело = "grant_type=login=" + Логин + "&password=" + Пароль; Запрос.Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded"); Запрос.УстановитьТелоИзСтроки(Тело,"UTF-8",ИспользованиеByteOrderMark. НеИспользовать); Ответ = Соединение.ОтправитьДляОбработки(Запрос); Тело = Ответ.ПолучитьТелоКакСтроку(); Понимаю что где то рядом - но что... подскажите пожалуйста | |||
| 1
    
        Смотрящий 27.09.24✎ 11:45 | 
        Соединение = Новый HTTPСоединение("pharmapi.apteka.ru",, Логин, Пароль,,, Новый ЗащищенноеСоединениеOpenSSL());     | |||
| 2
    
        Tarlich 27.09.24✎ 11:56 | 
        (1) прошу уточнить "pharmapi.apteka.ru/Auth" ?
 Ответ = Соединение. ?? | |||
| 3
    
        novichok79 27.09.24✎ 12:04 | 
        (0) сделай курл из постмана и скинь сюда.     | |||
| 4
    
        novichok79 27.09.24✎ 12:06 | 
        Тело = "grant_type=login=" + Логин + "&password=" + Пароль;
 это вообще похоже надо пихать в query, а не в тело, тут же типичное перечисление query параметров. а вообще где документация к api? как можно помочь не зная, что надо сделать )))) я думал это очевидные вещи типа. | |||
| 5
    
        Смотрящий 27.09.24✎ 12:08 | 
        HTTPЗапросЗаголовки = Новый Соответствие;
 HTTPЗапросЗаголовки.Вставить("Content-Type", "text/xml"); Соединение = Новый HTTPСоединение("pharmapi.apteka.ru",, Логин, Пароль,,, Новый ЗащищенноеСоединениеOpenSSL()); ЗапросHTTP = Новый HTTPЗапрос("/Auth", HTTPЗапросЗаголовки); ОтветHTTP = СоединениеHTTP.ВызватьHTTPМетод("GET", ЗапросHTTP); // Или ПОСТ ? | |||
| 6
    
        Tarlich 27.09.24✎ 12:17 | 
        (3) не знаю что такое "курл"
 https://i.postimg.cc/VvSjQ3VC/111.png 
 | |||
| 7
    
        Tarlich 27.09.24✎ 12:24 | 
        ЗаголовкиЗапроса = Новый Соответствие;
 ЗаголовкиЗапроса.Вставить("login", Логин); ЗаголовкиЗапроса.Вставить("password", Пароль); // Подключаемся к сайту. СоединениеHTTP = Новый HTTPСоединение("pharmapi.apteka.ru"); // Получение текста страницы ЗапросHTTP = Новый HTTPЗапрос("/Auth", ЗаголовкиЗапроса); // Можно указать любую страницу например, "/services" или "/contacts" РезультатЗапроса = СоединениеHTTP.Получить(ЗапросHTTP); // Get запрос так 301 получаю | |||
| 8
    
        arsik гуру 27.09.24✎ 12:26 | 
        (7) Так ты зачем игнорируешь ssl?     | |||
| 9
    
        Смотрящий 27.09.24✎ 12:28 | 
        HTTPЗапросЗаголовки = Новый Соответствие;
 HTTPЗапросЗаголовки.Вставить(); // Воткнешь сюда из Headers постмана ТелоСтруктура = Новый Структура; ТелоСтруктура.Вставить("login", <login>); ТелоСтруктура.Вставить("password", <password>); JSONЗапись = Новый ЗаписьJSON; JSONЗапись.УстановитьСтроку(); ЗаписатьJSON(JSONЗапись, ТелоСтруктура); СоединениеHTTP= Новый HTTPСоединение("pharmapi.apteka.ru",,,,,, Новый ЗащищенноеСоединениеOpenSSL()); ЗапросHTTP = Новый HTTPЗапрос("/Auth", HTTPЗапросЗаголовки); ЗапросHTTP.УстановитьТелоИзСтроки(JSONЗапись.Закрыть()); ОтветHTTP = СоединениеHTTP.ВызватьHTTPМетод("POST", ЗапросHTTP); | |||
| 10
    
        Tarlich 27.09.24✎ 12:38 | ||||
| 11
    
        Смотрящий 27.09.24✎ 12:40 | 
        В хидденах смотри
 Content-Type должен быть, как минимум, и судя по (0) "text/xml" | |||
| 12
    
        Tarlich 27.09.24✎ 12:48 | 
        закомментировал 
 // HTTPЗапросЗаголовки.Вставить(); // Воткнешь сюда из Headers постмана ОтветHTTP вернул кодсостояния 200 и соответствие в соответствие Content-Type есть | |||
| 13
    
        Смотрящий 27.09.24✎ 12:50 | 
        Токен то вернул ?     | |||
| 14
    
        Tarlich 27.09.24✎ 12:54 | ||||
| 15
    
        Смотрящий 27.09.24✎ 12:54 | 
        ОтветHTTP.ПолучитьТелоКакСтроку() - токен есть ?     | |||
| 16
    
        ass1c 27.09.24✎ 12:55 | 
        (12) в теле ответа что?     | |||
| 17
    
        Tarlich 27.09.24✎ 13:01 | 
        (15) Да ! есть СПАСИБО !!!     | |||
| 18
    
        Смотрящий 27.09.24✎ 13:03 | 
        ОтветHTTP = СоединениеHTTP.ВызватьHTTPМетод("POST", ЗапросHTTP);
 ЧтениеJSON = Новый ЧтениеJSON(); ЧтениеJSON.УстановитьСтроку(ОтветHTTP .ПолучитьТелоКакСтроку()); ОтветСтруктура = ПрочитатьJSON(ЧтениеJSON); | |||
| 19
    
        Смотрящий 27.09.24✎ 13:03 | 
        дальше сам     | |||
| 20
    
        novichok79 27.09.24✎ 13:44 | 
        (6) на будущее, очень помогает.
 https://stackoverflow.com/questions/49432735/converting-a-postman-request-to-curl | |||
| 21
    
        Tarlich 09.10.24✎ 12:03 | 
        Прошу помощи ! что то все же не хватает мне .....
 1 - Итак, выше удалось получить токен . 2 - теперь необходимо при Bearer токене передать о том что Заказ получен на адрес Делаю Сервер = "pharmapi.apteka.ru"; Адрес = "/Pharm/ShippedOrders"; HTTPСоединение = Новый HTTPСоединение(Сервер,,,,,,);; ЗаголовкиЗапроса = Новый Соответствие; ЗаголовкиЗапроса.Вставить("Accept", "application/json"); ЗаголовкиЗапроса.Вставить("Content-Type", "application/json"); ЗаголовкиЗапроса.Вставить("Authorization","Bearer "+ token); ЗапросHTTP = Новый HTTPЗапрос(Адрес, ЗаголовкиЗапроса); ////////////////////////// Необходимо передать параметр orderNums[] Массив номеров заказов, которые были выкуплены пользователями array(внутри string) Это я как понимаю надо в тело в итоге получилось Сервер = "pharmapi.apteka.ru"; Адрес = "/Pharm/ShippedOrders"; HTTPСоединение = Новый HTTPСоединение(Сервер,,,,,,);; ЗаголовкиЗапроса = Новый Соответствие; ЗаголовкиЗапроса.Вставить("Accept", "application/json"); ЗаголовкиЗапроса.Вставить("Content-Type", "application/json"); ЗаголовкиЗапроса.Вставить("Authorization","Bearer "+ token); ЗапросHTTP = Новый HTTPЗапрос(Адрес, ЗаголовкиЗапроса); ТелоЗапроса = "{"+"""orderNums"""+":["+Заказ+ "]}" ; ЗапросHTTP.УстановитьТелоИзСтроки(ТелоЗапроса); Ответ = HTTPСоединение.ОтправитьДляОбработки(ЗапросHTTP); ТекстОтвета = Ответ.ПолучитьТелоКакСтроку(); получаю ответ 308 - почему так ? если делаю Сервер = "pharmapi.apteka.ru"; Адрес = "/Pharm/ShippedOrders"; ЗаголовкиЗапроса = Новый Соответствие; ЗаголовкиЗапроса.Вставить("Accept", "application/json"); ЗаголовкиЗапроса.Вставить("Content-Type", "application/json"); ЗаголовкиЗапроса.Вставить("Authorization","Bearer "+ token); ТелоЗапроса = "{"+"""orderNums"""+":["+Заказ+ "]}" ; Соединение = Новый HTTPСоединение(Сервер,,,,,, Новый ЗащищенноеСоединениеOpenSSL()); ЗапросHTTP = Новый HTTPЗапрос(Адрес, ЗаголовкиЗапроса); ЗапросHTTP.УстановитьТелоИзСтроки(ТелоЗапроса); ОтветHTTP = Соединение.ВызватьHTTPМетод("POST", ЗапросHTTP); Ответ = ОтветHTTP.ПолучитьТелоКакСтроку(); ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.УстановитьСтроку(Ответ); РезультатСоответствие = ПрочитатьJSON(ЧтениеJSON,Истина); получаю ответ 400 | |||
| 22
    
        Tarlich 09.10.24✎ 12:01 | 
        Сервер = "pharmapi.apteka.ru";
 Адрес = "/Pharm/ShippedOrders"; ЗаголовкиЗапроса = Новый Соответствие; ЗаголовкиЗапроса.Вставить("Accept", "application/json"); ЗаголовкиЗапроса.Вставить("Content-Type", "application/json"); ЗаголовкиЗапроса.Вставить("Authorization","Bearer "+ token); Соединение = Новый HTTPСоединение(Сервер,,,,,, Новый ЗащищенноеСоединениеOpenSSL()); СтруктураЗапроса = новый Структура; myMass = новый массив; myMass.Добавить(Заказ); СтруктураЗапроса.Вставить("orderNums",myMass); ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " " , Истина, ЭкранированиеСимволовJSON.Нет, Ложь, Ложь, Ложь, Ложь); ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.ПроверятьСтруктуру = Истина; ЗаписьJSON.УстановитьСтроку(ПараметрыJSON); ЗаписатьJSON(ЗаписьJSON, СтруктураЗапроса); ЗапросJSON = ЗаписьJSON.Закрыть(); HTTPЗапрос= Новый HTTPЗапрос(Адрес); //Закидываем JSON в тело HTTPЗапрос.УстановитьТелоИзСтроки(ЗапросJSON); HTTPОтвет = Соединение.ВызватьHTTPМетод("POST",HTTPЗапрос); //Получаем ответ или текст ошибки Ответочка = HTTPОтвет.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8); так то же 400 | |||
| 23
    
        Tarlich 09.10.24✎ 12:04 | 
        Спасибо ! так победил - 200 !!!
 Сервер = "pharmapi.apteka.ru"; Адрес = "/Pharm/ShippedOrders"; ЗаголовкиЗапроса = Новый Соответствие; ЗаголовкиЗапроса.Вставить("Accept", "application/json"); ЗаголовкиЗапроса.Вставить("Content-Type", "application/json"); ЗаголовкиЗапроса.Вставить("Authorization","Bearer "+ token); Соединение = Новый HTTPСоединение(Сервер,,,,,, Новый ЗащищенноеСоединениеOpenSSL()); СтруктураЗапроса = новый Структура; myMass = новый массив; myMass.Добавить(Заказ); СтруктураЗапроса.Вставить("orderNums",myMass); ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " " , Истина, ЭкранированиеСимволовJSON.Нет, Ложь, Ложь, Ложь, Ложь); ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.ПроверятьСтруктуру = Истина; ЗаписьJSON.УстановитьСтроку(ПараметрыJSON); ЗаписатьJSON(ЗаписьJSON, СтруктураЗапроса); ЗапросJSON = ЗаписьJSON.Закрыть(); HTTPЗапрос= Новый HTTPЗапрос(Адрес,ЗаголовкиЗапроса); //Закидываем JSON в тело HTTPЗапрос.УстановитьТелоИзСтроки(ЗапросJSON); HTTPОтвет = Соединение.ВызватьHTTPМетод("POST",HTTPЗапрос); //Получаем ответ или текст ошибки Ответочка = HTTPОтвет.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8); | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |