|
JSON и 1с8.3 "Неправильный формат данных в запросе" | ☑ | ||
---|---|---|---|---|
0
dabuldakov
02.11.16
✎
06:36
|
Добрый день! Помогите разобраться. Никак не могу понять из-за чего сервер не принимает запрос.
Такие условия: Внимание! При отправке запроса в формате JSON перед {} необходимо добавить “data=”. Названия и значения параметров должны быть заключены в двойные кавычки, как в примере выше. Пример запроса из ТЗ: data = { "auth_key": "910c29400ebfed8c3baab93", "method": "getStoragesList" } Мой код: Данные = Новый Структура("auth_key, method", "910c29400ebfed8c3baab935f", "getStoragesList"); ЗаписьJSON = Новый ЗаписьJSON; //ЗаписьJSON.ПроверятьСтруктуру = Ложь; ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, ""); ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON); ЗаписатьJSON(ЗаписьJSON, Данные); СтрокаJSON = ЗаписьJSON.Закрыть(); СтрокаJSON = "data=" + СтрокаJSON; ssl = Новый ЗащищенноеСоединениеOpenSSL(); HTTPСоединение = Новый HTTPСоединение("api2.test.su/?json",,,,,5,ssl); HTTPЗапрос = Новый HTTPЗапрос(); HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.ANSI, ИспользованиеByteOrderMark.НеИспользовать); Результат2 = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос); РезультатОтвет2 = Результат2.ПолучитьТелоКакСтроку(КодировкаТекста.ANSI); ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.УстановитьСтроку(РезультатОтвет2); Пока ЧтениеJSON.Прочитать() Цикл ТипJSON = ЧтениеJSON.ТипТекущегоЗначения; Если ТипJSON = ТипЗначенияJSON.Строка ИЛИ ТипJSON = ТипЗначенияJSON.Число Тогда Сообщить(ЧтениеJSON.ТекущееЗначение); КонецЕсли; КонецЦикла; Возвращает: 200 - что соединение удалось с сервером, а вот формат запроса не верный. Проверял строку в веб сервисе без "data=" все ок. Пробывал разные кодировки, разные параметры JSON с символами и без. |
|||
1
dabuldakov
02.11.16
✎
06:57
|
"Неверный формат данных в запросе." Конкретный текст ответа сервера.
|
|||
2
zva
02.11.16
✎
07:20
|
"Названия и значения параметров должны быть заключены в двойные кавычки, как в примере выше." - Это не есть формат Json.
Метод ЗаписатьJSON() не будет значения с типом число, массив и т.д. заключать в кавычки, нужно все руками собирать... |
|||
3
DrZombi
гуру
02.11.16
✎
07:49
|
(0) 1С криво считывает JSON формат, который был сгенерирован не 1С. :)
|
|||
4
dabuldakov
02.11.16
✎
08:01
|
1) Вот что получается на выходе Метод ЗаписатьJSON()
"data={"auth_key":"123abc","method":"getStoragesList"}" 2) Вот что я собрал с Символ(34) "data={"auth_key":"123abc","method":"getStoragesList"}" |
|||
5
zva
02.11.16
✎
08:54
|
(4) Если впереди непонятный символ, то скорей всего BOM
Можно попробовать HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, "CESU-8"); |
|||
6
dabuldakov
02.11.16
✎
09:40
|
(5) Пробывал, сейчас еще раз попробывал. Тоже самое.
|
|||
7
Сниф
02.11.16
✎
10:05
|
СтрокаJSON = "data={auth_key:123abc,method:getStoragesList}" ;
А если так? Без внутренних кавычек. |
|||
8
dabuldakov
02.11.16
✎
11:50
|
(7) Попробовал, тоже самое.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |