POST-запрос form-urlencoded при изменении заказа в ABCP

Столкнулся с проблемой при изменении заказа из 1С на сайт под управлением ABCP.

В API метод POST для изменения заказа был описан странно:

Меня смутили именно параметры POST. Я пробовал сначала вообще передавать JSON, но получал ошибку, причем странным образом закодированную:

Мне пришлось расшифровывать ее специальным декодером. Было забавно, я сперва думал, что это я не указал какие-то параметры, когда передавал текст в декодер, хотя сам декодер лишь буквально расшифровывал мою ошибку. Потупил на этом минут 5.

Постепенно до меня дошло, что нужно передавать параметры в адресную строку. Через адресную строку работало, но ведь заказ может быть большим и не влезет в адресную строку, поэтому и используется POST, а не GET.

К счастью, я нашел пример кода для работы с другой командой и там выявил ключевую свою ошибку, нужно в заголовки вставлять:

Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded")

Сам текст запроса я установил подобным образом (для простоты восприятия добавил переводы строки):

userlogin=*******&
userpsw=*******&
order[positions][1][statusCode]=25544&
order[positions][1][id]=4033372&
order[positions][0][id]=40333349&
order[positions][0][statusCode]=25544
&order[number]=12345

После этого POST-запрос заработал и я получил желаемые изменения в статусе заказа.

Да, отмечу один нюанс ABCP, нужно указывать ID строки, если есть желание изменять строку. Иначе она пытается добавлять строку и ругается, что не заполнен brand в строке.

Объем: 2 час Среда: APCB API.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

комментария 2

  1. bob32:

    1. Ты вроде веб-ом немного занимался, а про urlencoded не слыхал.. Странно
    2. Никаких странных кодов в ошибке нет, просто обычный Unicode в escape варианте. Если бы занимался нормальным программированием то знал бы.

    Всё это еще больше подтверждает, что 1С разработчики это особый, изолированный мир.

    • я использовал многое, да, но не глубоко в теме. Не сталкивался ранее с такими интересными POST-запросами.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *