|
8.3.9, json, интеграция с веб сервисом. | ☑ | ||
---|---|---|---|---|
0
yarik
14.11.16
✎
16:07
|
Всем привет.
Есть веб сервис, на который из 1с надо отправлять данные с помощью POST запросов. На 8.2 все работает без проблем. При переходе на 8.3.9 тот же код получает в ответ от сервера ошибку 400 {"status":400,"error":"Invalid JSON request","message":"unexpected character at line 1, column 1 [parse.c:664]"} Посмотрел фидлером, что там 1с отправляет на сервер: POST https://xxx.com/api/v3/xxx/ HTTP/1.1 Host: xxx.com User-Agent: 1C+Enterprise/8.3 Accept: */* Content-Type: application/json X-User-Api-Token: xxx Content-Length: 564 { "data": { "attr1": "5.11", "attr2": "76063", "attr3": "5.11", "attr4": "fff", "attr5": "2016-11-09T12:00:00+02:00" } } В 8.2 все тоже самое, но почему-то Content-Length: 561 Для работы с json в 8.2 использовалась библиотека // JSON Парсер/Сериализатор // http://legionwfz.blogspot.com/2012/03/1json.html Пробовал использовать стандартные (из 8.3) средства для работы с JSON - проблема та же. JSON как видим отправляет валидный, где проблема - не пойму. Может кто сталкивался? |
|||
1
badboychik
14.11.16
✎
16:09
|
проблема в первом символе, возможно строка в UTF неверно сохранена, надо без BOM а у тебя с BOM
|
|||
2
Fragster
гуру
14.11.16
✎
16:10
|
(0) используй нативный объект 1с ЗаписьJSON
|
|||
3
yarik
14.11.16
✎
16:16
|
(2) пробовал так
ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(); ЗаписатьJSON(ЗаписьJSON, КоллекцияОбъектов); РезультатСтрока = ЗаписьJSON.Закрыть(); Результат тот же - 400 ошибка. Content-Length: 524 { "data": {"attr1": "5.11","attr2": "76063","attr3": "5.11","attr4": "fff","attr5": "2016-11-09T12:00:00+02:00" } } (1) сейчас покопаю в эту сторону |
|||
4
yarik
14.11.16
✎
16:27
|
(1) Вуаля, убрал ВОМ символы и все полетело. Спасибо.
Если кому интересно как убрать, один из способов - http://j008.ru/ps/013_utf_bom_out |
|||
5
Мойдодыр
14.11.16
✎
16:29
|
(4) у ЗаписьJSON есть такой параметр
|
|||
6
Мойдодыр
14.11.16
✎
16:30
|
ОткрытьФайл(<ИмяФайла>, <Кодировка>, <ДобавлятьBOM>, <Параметры>)
|
|||
7
Serginio1
14.11.16
✎
16:43
|
||||
8
Fragster
гуру
14.11.16
✎
16:48
|
(7) 4 года прошло...
|
|||
9
Asmody
14.11.16
✎
17:02
|
(7) Я в результате завел функцию
Функция Кодировка_UTF8_NoBOM() Возврат "CESU-8"; КонецФункции и ставлю её где нужно |
|||
10
Asmody
14.11.16
✎
17:03
|
(9)+ потому что я постоянно забывал это магическое сочетание букв
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |