|
Интеграция 1С и ИМ ABCP - как правильно получить ответ от ИМ? | ☑ | ||
---|---|---|---|---|
0
slafor
12.09.22
✎
10:31
|
Хотим настроить интеграцию 1С и Интернет-магазина на базе ABCP. Вроде бы все у них написано, какие строки отправлять, какие ответы должны приходить, и все с примерами. Но почти ничего не понятно... )
Вот пишу я строку в браузере, вида: h t t p s://id1****.public.api.abcp.ru/cp/orders?userlogin=api@id****8&userpsw=7385*******************f6fff1e6b&dateUpdatedStart=2013-08-02 , мне приходит ответ в окне: https://disk.yandex.ru/i/OaIyr9Ba8UBE3g . Это должен быть список заказов с определенной даты. Пишу такой код, где пароль указан только в строке: https://disk.yandex.ru/i/nU34_fpIZyRkLw , или и в строке, и в параметрах объекта HTTPСоединение, или только в параметрах объекта, результаты (ФайлОтвета) получаются разные, либо такой: https://disk.yandex.ru/i/rUaUJ0saVLyAYw , либо такой: https://disk.yandex.ru/i/gZo95MnQ_MQCPA . Но ничего похожего на то, что получается по прямой ссылке в браузере. Пробовал менять порт (443, 80), указывать и удалять параметр ЗащищенноеСоединениеOpenSSL - все одинаково не работает. Код ответа всегда "400". Подскажите, пожалуйста, что я делаю не так? Да, и то, что я получаю в браузере (напомню, это здесь: https://disk.yandex.ru/i/OaIyr9Ba8UBE3g), это что? Это не json? |
|||
1
Kassern
12.09.22
✎
10:38
|
(0) "это что? Это не json?" - это json
"Пишу такой код, где пароль указан только в строке" - не пишите такой код. В строке хттп соединения у вас должен быть лишь "id1****.public.api.abcp.ru", а вся остальная портянка в http запросе |
|||
2
Kassern
12.09.22
✎
10:40
|
Так же у http соединения есть параметры, такие как логин и пароль. Можно попробовать через них аунтификацию сделать.
Так же нужно указать правильные заголовки у http запроса, чтобы получить корректный результат. |
|||
3
Kassern
12.09.22
✎
10:41
|
Так же нужно скорее всего в УРЛ перекодировать ваш текст запроса, так как у вас там пробелы у даты. Проверьте в документации, в каком формате должна быть дата.
|
|||
4
slafor
18.09.22
✎
13:41
|
(1) Да, это json, и он отлично парсится у меня через FireFox: https://disk.yandex.ru/i/PamENfo5xKFJQA .
Причем неважно, пишу я http, или https - все равно все читается. Но из 1С так сделать не получается. Хотя вроде бы код пишу правильно - единственное, что, заголовки пока не знаю, как правильно написать: АдресЗапроса = "id*****.public.api.abcp.ru/cp/orders/?userlogin=api@id*****&userpsw=7385ee757dfc**********ff6fff1e6b"; АдресСайта = "id*****.public.api.abcp.ru"; ФайлОтвета = КаталогВременныхФайлов()+ "Orders.json"; HTTPСоединение = Новый HTTPСоединение(АдресСайта,443,"api@id*****","7385ee757dfc**********ff6fff1e6b",,,Новый ЗащищенноеСоединениеOpenSSL()); Заголовки = Новый Соответствие(); // Передаем в заголовках размер и тип данных на отправку Заголовки.Вставить("Content-Type", "application/json; charset=utf-8"); запросPOST = Новый HTTPЗапрос(АдресЗапроса,Заголовки); Попытка Ответ = HTTPСоединение.ОтправитьДляОбработки(запросPOST,ФайлОтвета); Исключение Ответ = Неопределено; КонецПопытки; Возврат Ответ; В итоге в файле ФайлОтвета получаю: "{"errorCode":3,"errorMessage":"Public API unknown operation"}". А если пишу "АдресЗапроса = "/cp/orders", то получаю "{"errorCode":4,"errorMessage":"Недостаточно фактических параметров"}. А код состояния всегда один - "400". Понимаю, что все очень просто - надо элементарно получить такой же файл ответа, какой получается при прямом вызове указанной строки HTTP запроса в любом браузере, но почему-то не получается. (3) Текст запроса пишу теперь без даты, в браузере показывает все заказы, в 1С - ту же фигню, что и раньше. (2) Логин и пароль вводил как в строке запроса, так и в параметрах HTTP-соединения, так и в обоих местах сразу - результат одинаковый! Пробовал и с портом 443, и с 80, и с ЗащищенноеСоединениеOpenSSL(), и без него - те же <...>. "вид сбоку". В общем, ничего не меняется и файл я не получаю. Самое главное, вообще непонятно, почему такой код состояния в ответе. |
|||
5
slafor
18.09.22
✎
15:22
|
По-моему, разобрался: там надо использовать не POST, а GET.
Т.е. вместо строки Ответ = HTTPСоединение.ОтправитьДляОбработки(запрос,ФайлОтвета); надо писать строку Ответ = HTTPСоединение.Получить(запрос,ФайлОтвета); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |