Имя: Пароль:
1C
1С v8
1c83 http-post бьет символы
0 murr_2012
 
05.04.21
12:37
Отправляю из 1с пухлый json через post запрос на nodejs-сервер (на этой же машине Ubuntu в виртуалке).

1с 8.3.18.1334 (пришлось переходить на BAS, решил ставить последнее из найденного в варезниках, времени экспериментировать не было, сейчас чувствую, что сглупил)
На прежней версии 3.8.10.2528(?) работало всё как часики.

        Попытка
        Соединение = Новый HTTPСоединение(АдресСервера, 8002, "mlApp1C", "mlApp1C");
    Исключение
        ЗаписьЖурналаРегистрации("Ошибка соединения с сервером бэкенда маршрутов ", УровеньЖурналаРегистрации.Ошибка);
        Возврат;
    КонецПопытки;
    
    Заголовки = Новый Соответствие;    
        Заголовки.Вставить("Content-Type", "application/json; charset=utf-8;");
    
    ЗапросХХТП = Новый HTTPЗапрос("?action=routelist_exported", Заголовки);
    
    ПолныйОтвет = Новый Структура ("success, message, data, operation", Истина, "", СтруктураОтвета, "export_routelists");
    
    Ответ = Новый ЗаписьJSON();
    Ответ.УстановитьСтроку();
    ЗаписатьJSON(Ответ, ПолныйОтвет); // сериализует ОтветМассив в формат JSON
        
    ЗапросХХТП.УстановитьТелоИзСтроки(Ответ.Закрыть(), КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
    
    Попытка
        Результат = Соединение.ОтправитьДляОбработки(ЗапросХХТП);
    Исключение
        ЗаписьЖурналаРегистрации("Ошибка отправки МЛ серверу бэкенда маршрутов ", УровеньЖурналаРегистрации.Ошибка);
        Возврат;
    КонецПопытки;

Все почти хорошо, за исключением того, что на ноду приходят битые символы типа

"УГХТ ��ОВ"
��аг. "Аптека"
Каб 52��

Это происходит не всегда и не везде. Делаю повторную отправку данных - приходит в нормальном виде. Ну возможно на третий раз.

Бесит. Что и где можно покрутить?
1 murr_2012
 
05.04.21
20:07
Решил через Новый COMОбъект("WinHttp.WinHttpRequest.5.1")

Закрыто.
2 Вафель
 
05.04.21
21:50
Это все бом
3 murr_2012
 
06.04.21
17:57
По поводу BOM делал "ИспользованиеByteOrderMark.НеИспользовать"
Пытался детектить BOM на приеме - не находил.

Как от этого избавиться? Писать строку на диск и скармливать curl?
4 Garykom
 
гуру
06.04.21
18:02
(3) XMLСтрока уже пробовал?
5 murr_2012
 
06.04.21
18:10
(4) Неа. Есть смысл? Там какой-то другой механизм сериализации?

Есть подозрение, что символы бьются где-то еще до отсылки. Может на этапе ЗаписатьJSON(Ответ, ПолныйОтвет);
Хрен поймаешь их появление.

WinHttp.WinHttpRequest вчера вроде все отослал красиво, но сегодня увидел несколько строк в БД битых.
То ли я их проглядел тогда, то ли проблема осталась.
AdBlock убивает бесплатный контент. 1Сергей