Имя: Пароль:
1C
1С v8
Не получается распарсить JSON строку
0 Pentosh
 
29.12.16
08:28
Есть 2 конфы: А - самописка УФ 8.3, Б - УПП 1.3.
Есть апи сайта в которую нужно отсылать некие данные в json формате.
В самописке все хорошо, работает и отправляет, а вот в УПП появилась проблема. В ответ на правильную json строку (смотрю лог, в блокноте) приходит "Unable to parse JSON request".

Грешу толи на BOM в UTF-8 толи на другую кодировку строк.
Подскажите, что может быть и как это попробовать исправить?
1 sikuda
 
29.12.16
08:47
BOM удали и приведи строку где ошибка?
2 Pentosh
 
29.12.16
08:50
(1)

[

{

"methodName": "Session.open",

"methodCallArgs": [

"логин",

"пароль"

]

}

]


Бом удалить пробовал, не факт что получалось ибо через файл делал (сохранял в файл и потом от туда вытаскивал значение)
3 Помогите
 
29.12.16
08:54
Поотправляй через curl, поэкспериментируй
4 zva
 
29.12.16
08:55
(2) Выложи кусок функции отправки, где тело запроса формируется
5 Pentosh
 
29.12.16
09:07

ВызовСоответствие = Новый Соответствие;
            ВызовСоответствие.Вставить("methodName", ПодготовленныйВызов.ИмяМетода);
            ВызовСоответствие.Вставить("methodCallArgs", ПодготовленныйВызов.Параметры);
            ТелоЗапроса.Добавить(ВызовСоответствие);

Попытка
            ТелоОтвета = _ВосстановитьИзJSON(_ВыполнитьHTTPЗапросPOST(_HTTPСоединение, _СтруктураURIСтрокиСоединения, _ПреобразоватьВJSON(ТелоЗапроса)));
        Исключение
        КонецПопытки;

Функция _ПреобразоватьВJSON(Знач Источник)
    ЗJ = Новый ЗаписьJSON;
    ЗJ.УстановитьСтроку();
    ЗаписатьJSON(ЗJ, Источник);
    Р = ЗJ.Закрыть();
    Возврат Р;
КонецФункции



ничего не обычного в функции нет.

(3) Из другой конфы все работает, с тем же кодом, в ручную тоже.

Посоветуйте как кодировку у строки поменять и как бом удалить, только не через файл :)
6 Помогите
 
29.12.16
09:12
Уверен что дело в кодировке? Если этот же JSON сформировать вручную (просто текст вставить в код) и отправить на сервер, то тоже будет ошибка?
7 zva
 
29.12.16
09:16
HTTPЗапрос.УстановитьТелоИзСтроки(Json, "CESU-8", ИспользованиеByteOrderMark.НеИспользовать);
Соединение.ОтправитьДляОбработки(HTTPЗапрос);
8 Pentosh
 
29.12.16
09:17
(6) Попробую, до этого не додумался, спасибо.
(7) И это попробую, читал что эта кодировка убирает Бом, спасибо.
9 Pentosh
 
29.12.16
09:42
(7) Теперь работает, спасибо большое, очень помогли.