Вход | Регистрация

1С:Предприятие ::

Метки: 

HTTP-Запрос обрезает тело запроса ЕГАИС

Я
   Bertruger
 
14.04.17 - 16:53
Конструкция примерно такая. 
ЗапросHTTP = Новый HTTPЗапрос("/opt/in/WayBill", ЗаголовокHTTP);
ЗапросHTTP.УстановитьТелоИзСтроки(Body,"UTF-8");
ОтветHTTP = НТТР.ОтправитьДляОбработки(ЗапросHTTP);

В Body, большая накладная. При выполнении дает 500 ошибку, поставил httpAnalyzer, он мне показал что текст Body, обрезан примерно в половину.
Кладу в Body маленький запрос остатков, всё отрабатывает, статус 200. В httpAnalyzer, запрос остатков не обрезается, т.к. маленький.

Пробовал и так:
ЗапросHTTP.УстановитьИмяФайлаТела(ФайлЗапроса);  //Устанавливает имя файла, из которого будет прочитано тело POST-запроса.

ЗапросHTTP.УстановитьТелоИзДвоичныхДанных(ДвоичныеДанныеБезBOM(body));
Результат тот же.
У кого какие идеи есть?
 
 
   Юрий Лазаренко
 
1 - 14.04.17 - 17:11
(0) Длинный текст не помещается в переменную Body. Клади текст в текстовый документ, например, и передавай его в запрос через ТекстовыйДокумент.ПолучитьТекст()

ЗапросHTTP.УстановитьТелоИзСтроки(ТекстовыйДокумент.ПолучитьТекст(),"UTF-8");
   Bertruger
 
2 - 14.04.17 - 17:15
(1) Проверял в отладке, в body текст полный, перед передачей в тело. Но после отправки, httpAnalyzer говорит что текста примерно 50%.
   Bertruger
 
3 - 14.04.17 - 17:18
При этом если отправлять, через 1с 7.7 (msxml3 или WinHttp.WinHttpRequest.5.1 или curl), то всё уходит, статус 200, httpAnalyzer показывает 100% текста.
А вот через 8 режет.
   dezss
 
4 - 14.04.17 - 17:29
А что у тебя в ЗаголовокHTTP?
   Bertruger
 
5 - 14.04.17 - 17:35
(4)
ЗаголовокHTTP = Новый Соответствие();
        ЗаголовокHTTP.Вставить("Content-Type", "multipart/form-data; boundary=" + Boundary);
        ЗаголовокHTTP.Вставить("Content-Length", XMLСтрока(СтрДлина(Body)));
        ЗаголовокHTTP.Вставить("Connection", "Keep-alive");
   Неверный Параметр И
 
6 - 14.04.17 - 17:38
Попробуй Content-Length не указывать. Емнип оно само пересчитает правильно.
   Bertruger
 
7 - 14.04.17 - 17:41
(6) Мерси. Текст в снифер пошел, весь.
   vladimir80
 
8 - 14.04.17 - 17:48
(5) Я всю жизнь ошибочно полагал, что в Content-Length указывается длина сообщения в байтах, а не в символах...
   Неверный Параметр И
 
9 - 14.04.17 - 17:55
(8) Конечно ошибочно. Оно же по стандарту в октетах, а не в байтах считается (:
   vladimir80
 
10 - 14.04.17 - 18:07
(9) Супер ))) Теперь знаю как длину в октетах считать ))))

 XMLСтрока(СтрДлина(Body))

=)
 
  Рекламное место пустует
   oleg_km
 
11 - 14.04.17 - 18:32
(10) Не надо ее вообще считать. ЕЕ 1С само прекрасно считает
   Неверный Параметр И
 
12 - 14.04.17 - 18:37
(10) Все правильно. По http передается html. Html это подмножество xml. Поэтому XMLСтрока (:
   oleg_km
 
13 - 14.04.17 - 20:05
(12) http сетевой протокол, html и xml языки разметки. Что общего? Если что: по http вообще можно бинарные данные передавать.
   Неверный Параметр И
 
14 - 14.04.17 - 20:22
(13) Бинарные данные, да. Наверно здесь даже лучше использовать https. Он со строками лучше работает, буковка "s" в конце говорит о специальной оптимизации для string.
   Юрий Лазаренко
 
15 - 14.04.17 - 23:21
(14) А не о том, что он "secure"?
   oleg_km
 
16 - 15.04.17 - 08:11
Он прикалывается


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