|
Не получается распарсить 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) Теперь работает, спасибо большое, очень помогли.
|
|
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший