|
прошу подсказать с 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); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |