|
Ответ на HTTPЗапрос разный при отправке с разных серверов | ☑ | ||
---|---|---|---|---|
0
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 сравнить передаваемый и его кодировку
|
|||
3
Dirk Diggler
04.07.21
✎
17:22
|
(1) все один в один. конфигурация копируется путем всасывания dt, там нечему отличаться.
|
|||
4
Dirk Diggler
04.07.21
✎
17:22
|
(2) в нем только латиница. кодировка задается явным образом:
HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, кодировкаТекста.UTF8); |
|||
5
acht
04.07.21
✎
17:22
|
(0) Третий параметр метода УстановитьТелоИзСтроки
|
|||
6
acht
04.07.21
✎
17:23
|
А вообще - берешь fiddler, смотришь что вылетает, что прилетает...
|
|||
7
серый КТУЛХУ
04.07.21
✎
17:27
|
в таких случаях очень частая причина - в разной интертрепации исполнителем пропущенных параметров. попробуй во всех(!) вызовах методов/процедур/функций/настроексоединений указать все параметры без пропусков.
|
|||
8
Dirk Diggler
04.07.21
✎
17:45
|
(6) Посмотрел. Разница только в строке Content-Length
http://joxi.ru/zANqwqRfjpM8V2 http://joxi.ru/12MJwJaHkV5wGA |
|||
9
Dirk Diggler
04.07.21
✎
17:47
|
HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, кодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать) - заработало!
|
|||
10
acht
04.07.21
✎
17:48
|
(8) Ну вот эти три байта BOM и есть
|
|||
11
Dirk Diggler
04.07.21
✎
17:48
|
всех блрю за пмщщь
|
|||
12
серый КТУЛХУ
04.07.21
✎
19:15
|
(9): дык (7).
|
|||
13
Garykom
гуру
04.07.21
✎
19:39
|
срезаться на BOM это типовая ошибка
примерно как на неразрывном пробеле когда число в строку и число оказывается >=1000 |
|||
14
серый КТУЛХУ
04.07.21
✎
19:49
|
(13): а еще срезаться на не-указании "Content-Type" в надежде что адресат-исполнитель и так по дефолту узнает... сам на таком при работе с гугль-доками-драйвами об стену убивался...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |