|
Нормальный ответ в Postman и пустой ответ от сервера в 1С | ☑ | ||
---|---|---|---|---|
0
Aswed
20.04.20
✎
15:36
|
СоединениеHHTP = Новый HTTPСоединение("pr-lg.ru",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
HTTPЗапрос = Новый HTTPЗапрос(); HTTPЗапрос.АдресРесурса = "/api/search/items"; HTTPЗапрос.Заголовки.Вставить("secret", "******"); HTTPЗапрос.Заголовки.Вставить("article", "35197"); ДокументОтвет = ПолучитьИмяВременногоФайла(); Ответ = СоединениеHHTP.Получить(HTTPЗапрос,ДокументОтвет); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Ответ.КодСостояния); ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.ОткрытьФайл(ДокументОтвет); СтруктураОтвета = ПрочитатьJSON(ЧтениеJSON, Истина); Собственно вот таким кодом обращаюсь к сайту. Оттуда приходит код ответа 200, т.е. запрос выполнен верно. Но вот документ ответ остаётся пустым. При этом такой же вот запрос отправляю через Postman, с теми же параметрами в заголовке и туда всё возвращает как надо. Не соображу куда рыть блин. |
|||
1
bolero
20.04.20
✎
16:09
|
ДокументОтвет пустой или СтруктураОтвета пустой?
может, там json приходит паралимпийский, и ПрочитатьJSON() его разбирает в пусто |
|||
2
Aswed
20.04.20
✎
16:18
|
(1) Документ ответ.
Я методом тыка нашёл способ что бы он возвращал мне данные. HTTPЗапрос.АдресРесурса = "/api/search/items?secret=******&article=35197"; Т.е. то что я указываю в заголовка APIключ и параметр поиска им не канает. Надо непосредственно форматировать строку адреса ресурса. Я то могу её формировать динамически, не проблема, но может я просто как то ни так задаю параметры в заголовках? Хотя там вроде по другому их и не задать. |
|||
3
Garykom
гуру
20.04.20
✎
16:25
|
"Content-Type" установи правильный
|
|||
4
Aswed
20.04.20
✎
16:30
|
(3) HTTPЗапрос.Заголовки.Вставить("secret", "*****");
HTTPЗапрос.Заголовки.Вставить("article", "35197"); HTTPЗапрос.Заголовки.Вставить("Content-Type", "json"); Не прокатило |
|||
5
Garykom
гуру
20.04.20
✎
16:36
|
(4) нету такого "json"
|
|||
6
Aswed
20.04.20
✎
16:45
|
(5) Сорян
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json"); Но разницы ни какой нет. Всё так же ответ от сервера пустой файл( |
|||
7
Garykom
гуру
20.04.20
✎
16:54
|
"application/x-www-form-urlencoded" попробуй, может в этом случае для GET 1C заголовки правильно засунет ))
|
|||
8
Lexey_
20.04.20
✎
17:01
|
(0) временный файл не нужен:
Ответ = СоединениеHHTP.Получить(HTTPЗапрос); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Ответ.КодСостояния); ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку()); |
|||
9
Aswed
20.04.20
✎
17:04
|
(7) Не прокатило(
(8) Да это то ладно. Там красоту потом наведу. Главное что бы работало как надо блин( |
|||
10
Lexey_
20.04.20
✎
17:07
|
(9) я не про красоту, вот именно этот код рабочий, без временного файла.
Нужно использовать временный файл либо HTTPОтвет, что-то одно. |
|||
11
Lexey_
20.04.20
✎
17:08
|
+(8) либо не нужна переменная Ответ
|
|||
12
Aswed
20.04.20
✎
17:11
|
(10) Да не. Всё отлично можно использовать. У меня так работает в куче мест.
Но для успокоения попробовал сразу без файла, как ты в (8) сделал. Результат тот же . Код ответа сервера 200. Сам ответ пустой. |
|||
13
Lexey_
20.04.20
✎
17:21
|
(12) да чуть-чуть перепутал: хотел сказать, что если указано имя временного файла, то из HTTPОтвета тело уже не получишь, но здесь не этот случай
|
|||
14
bolero
20.04.20
✎
18:34
|
(2) а в доке к api написано параметры в заголовках передавать? крайне редко применяется такая дичь, чисто с целью задолбать пользователей
обычно либо жестко требуют в теле POST, либо на выбор POST или GET, либо часть в GET, остальное в POST |
|||
15
sitex
naïve
20.04.20
✎
18:47
|
(14) С доков и надо начинать, https://pr-lg.ru/api.
|
|||
16
sitex
naïve
20.04.20
✎
18:50
|
(2) Если нашел как возвращает, ТО как бы это GET и у тебя видать или кукис храниться где то раз выводит. Их надо в заголовках передать авторизацию. Посмотри лучше в Fiddler-е.
|
|||
17
Aswed
21.04.20
✎
08:53
|
(14)
Для получения ответа от системы API, необходимо подключиться к определенному пути ресурса, например: https://pr-lg.ru/api/search/products?secret=[API]&article=[Артикул]. Вот всё что написано в "документации")))) И дальше только параметры для разных функций. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |