|
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 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 Парсер/Сериализатор
//
Пробовал использовать стандартные (из 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) Вуаля, убрал ВОМ символы и все полетело. Спасибо.
Если кому интересно как убрать, один из способов -
|
|
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)+ потому что я постоянно забывал это магическое сочетание букв
|
|