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

Ответ на HTTPЗапрос разный при отправке с разных серверов

Ответ на HTTPЗапрос разный при отправке с разных серверов
Я
   Dirk Diggler
 
04.07.21 - 17:15
Есть конфигурация. В ней процедура, которая по разному работает, если конфигурацию запускать под разными серверами

Функция ПолучитьHTTPОтветPOST  (Сервер, АдресРесурса, СоответствиеЗаголовки, ТекстЗапроса, SSLСоединение ) экспорт
    
    HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса,СоответствиеЗаголовки);
    HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, кодировкаТекста.UTF8);
    Соединение = Новый HTTPСоединение(Сервер,,,,,25,?(SSLСоединение,Новый ЗащищенноеСоединениеOpenSSL, неопределено));
    Попытка
        Ответ = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
        СтруктураОтвета = Новый Структура;
        
        СтруктураОтвета.Вставить("КодСостояния", ответ.КодСостояния);
        СтруктураОтвета.Вставить("Заголовки", ответ.Заголовки);
        СтруктураОтвета.Вставить("ТелоКакСтрока", ответ.ПолучитьТелоКакСтроку() );
        СтруктураОтвета.Вставить("ТелоКакДвоичныеДанные", ответ.ПолучитьТелоКакДвоичныеДанные() );
    Исключение
        Описание = ОписаниеОшибки();
        СтруктураОтвета = Новый Структура;
        
        СтруктураОтвета.Вставить("КодСостояния", 520);
        СтруктураОтвета.Вставить("Заголовки", Неопределено);
        СтруктураОтвета.Вставить("ТелоКакСтрока", ОписаниеОшибки() );
        СтруктураОтвета.Вставить("ТелоКакДвоичныеДанные", Неопределено);
    КонецПопытки;
    возврат СтруктураОтвета;
КонецФункции

В 8.3.16.1148 - все ок. Рядом другой сервер, поновей - и если эту конфу развернуть там, то удаленный сервер возвращает код 400, мол типа JSON не могу разобрать(он передается в ТекстЗапроса). Мамой клянусь, он одинаковый.

Какие могут быть причины? Что попробовать?
   Ёпрст
 
1 - 04.07.21 - 17:21
посмотреть все параметры вестимо, заголовки, например
   Ёпрст
 
2 - 04.07.21 - 17:22
ну и сам json сравнить передаваемый и его кодировку
   Dirk Diggler
 
3 - 04.07.21 - 17:22
(1) все один в один. конфигурация копируется путем всасывания dt, там нечему отличаться.
   Dirk Diggler
 
4 - 04.07.21 - 17:22
(2) в нем только латиница. кодировка задается явным образом:

HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, кодировкаТекста.UTF8);
   acht
 
5 - 04.07.21 - 17:22
(0) Третий параметр метода УстановитьТелоИзСтроки
   acht
 
6 - 04.07.21 - 17:23
А вообще - берешь fiddler, смотришь что вылетает, что прилетает...
   серый КТУЛХУ
 
7 - 04.07.21 - 17:27
в таких случаях очень частая причина - в разной интертрепации исполнителем пропущенных параметров. попробуй во всех(!) вызовах методов/процедур/функций/настроексоединений указать все параметры без пропусков.
   Dirk Diggler
 
8 - 04.07.21 - 17:45
(6) Посмотрел. Разница только в строке Content-Length

http://joxi.ru/zANqwqRfjpM8V2

http://joxi.ru/12MJwJaHkV5wGA
   Dirk Diggler
 
9 - 04.07.21 - 17:47
HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, кодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать) - заработало!
   acht
 
10 - 04.07.21 - 17:48
(8) Ну вот эти три байта BOM и есть
   Dirk Diggler
 
11 - 04.07.21 - 17:48
всех блрю за пмщщь
   серый КТУЛХУ
 
12 - 04.07.21 - 19:15
(9): дык (7).
   Garykom
 
13 - 04.07.21 - 19:39
срезаться на BOM это типовая ошибка
примерно как на неразрывном пробеле когда число в строку и число оказывается >=1000
   серый КТУЛХУ
 
14 - 04.07.21 - 19:49
(13): а еще срезаться на не-указании "Content-Type" в надежде что адресат-исполнитель и так по дефолту узнает... сам на таком при работе с гугль-доками-драйвами об стену убивался...

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