Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

1c83 http-post бьет символы

1c83 http-post бьет символы
Я
   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��

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

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

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

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

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.