|
Коллеги, можно похвастаться гуру-левелом по POST-запросам.
| ☑ |
0
Гений 1С
гуру
01.05.20
✎
10:45
|
Пытался создать в ZOHO BOOKS карточку номенклатуры (экспорт из 1С) через API.
Все делаю, как написано, а запрос не проходит.
Ругается, что неверный JSON формат.
Я и так и этак. В итоге заюзал тестовый сервис:
Отправил туда POST запрос и получил ответ.
По ответу понял, что ошибка в BOM.
ТелоHTTPЗапроса = "JSONString=" + ТелоHTTPЗапроса + "";
HTTPЗапрос.УстановитьТелоИзСтроки(ТелоHTTPЗапроса,"UTF-8", ИспользованиеByteOrderMark.НеИспользовать);
Т.е. нужно было явно указать: ИспользованиеByteOrderMark.НеИспользовать
Если бы не догадался заюзать тестовый сервер, возможно бы и не решил задачу.
Картинки с POST-ответами тут:
|
|
1
NorthWind
01.05.20
✎
11:23
|
На это напарывались почти все, кто пытался взаимодействовать с сервисами по REST на кириллице.
Причем раньше было хуже - в 8.2 этого параметра не было и приходилось изгаляться, в частности, использовать кодировку CESU-8.
|
|
2
Гений 1С
гуру
01.05.20
✎
11:33
|
(1) ну хз, хз. там было на английском, сервер таки английский. кодировка UTF-8 в тексте. Но тем не менее, я бы ни за что не понял в чем дело, если бы не заюзал тестовый сервер. ;-)
Ну или бы пришлось на мисту идти.
|
|
3
J_B
01.05.20
✎
12:58
|
<ИспользоватьBOM> (необязательный)
Тип: ИспользованиеByteOrderMark.
Использовать метку порядка байтов (BOM) для кодировок, которые ее поддерживают: UTF-8, UTF-16 и др.
В режиме совместимости конфигурации значение по умолчанию - Использовать.
Сам некоторое время назад напоролся на эту особенность. Выловить удалось с помощью Fiddler
|
|
4
Гений 1С
гуру
01.05.20
✎
13:30
|
(3) Прикол в том, что в прошлых релизах работало и без этой приблуды, а в новом перестало. Сперва я грешил на изменения на стороне ZOHO, но правда оказалась в нарушении обратной совместимости у 1С
|
|
5
Вафель
01.05.20
✎
13:48
|
ты уверен что нужно передавать JSONString=
|
|
6
Гений 1С
гуру
01.05.20
✎
14:09
|
(5) да, так требуется в API
По сути, это имя поля в curl-ключе F (передача формы)
|
|