Имя: Пароль:
1C
1С v8
отправка больших файлов через WinHttp.WinHttpRequest.5.1
🠗 (Волшебник 08.02.2024 20:15)
,
0 smpulan
 
07.02.24
16:30
Коллеги, проблема следующего характера, на небольших файлах отправка проходит успешно. Как только размер отправляемого тела файла начинает превышать 1Мб, метод Send завершается ошибкой:"Произошла исключительная ситуация (WinHttp.WinHttpRequest): Соединение с сервером было неожиданно прервано". Т.е. явно проблема связана с размером тела передаваемого в запросе. Т.к. если уменьшить размер передаваемых данных, удалив некоторое количество произвольных строк из проблемного запроса, то отправка проходит успешно.
Выяснил, что WinHttp.Option(16) содержится числовое значение 1024000, но при попытке его изменения WinHttp.Option(16,2048000) оно не меняется.
Всем заранее спасибо за ответы.

WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
WinHttp.Option(2, "utf-8");

WinHttp.Open("POST", Адрес, 0);
WinHttp.SetRequestHeader("Content-type", "application/xml");
Если ЗначениеЗаполнено(ИмяПользователя) Тогда
    WinHttp.SetCredentials(ИмяПользователя, Пароль, 0);
КонецЕсли;
        
WinHttp.Send(ТекстЗапроса);
1 Волшебник
 
07.02.24
16:36
А при чём тут 1С???
2 smpulan
 
07.02.24
16:57
(1) Отправка реализована из среды 1С, может кто-то сталкивался ранее с аналогичной проблемой и подскажет направление "куда копать".
3 Волшебник
 
07.02.24
16:58
(2) Ну так используйте штатные объекты 1С, а именно HTTPСоединение
4 Dzenn
 
гуру
07.02.24
16:59
Сразу вопрос - почему не используются встроенные в 1С методы работы в HTTP? Они есть и прекрасно работают
5 Shur1cIT
 
07.02.24
17:11
(0) проблема с веб сервером, у него ограничение, правда странно что такое маленькое, у меня стоял IIS и отрубало на 30 МБ
6 p-soft
 
07.02.24
17:13
(0) шлите кусками и шейте по месту получения
7 Serginio1
 
08.02.24
00:28
https://infostart.ru/1c/articles/466052/

Можно сжимать контент.
и отправлять StreamContent

https://stackoverflow.com/questions/48344819/send-large-file-via-httpclient
8 smpulan
 
08.02.24
20:06
Проблема с отправкой решена, тему можно закрывать.
1. Поменял библиотеку отправки на альтернативную MSXML2, что дало более информативное сообщение об ошибке:"413 Request Entity Too Large. nginx/1.19.0".
WinHttp = Новый COMОбъект("MSXML2.XMLHttp");
WinHttp.Open("POST", Адрес, Ложь, ИмяПользователя, Пароль);
2. Озадачил сист. администраторов на тему того, чтобы они увеличили на веб-сервере Nginx параметр client_max_body_size с значения по умолчанию в 1 МБ до 3 МБ.
9 Garykom
 
гуру
08.02.24
20:10
Объясни зачем в 1С 8 нужна внешняя хрень для работы с http?
Чем не устраивает HTTPСоединение ?

Если у тебя 1С 7.7 то ты явно секцией ошибся
10 Волшебник
 
08.02.24
20:18
(9) для v7 нет Новый.
Значит он не ошибся с секцией.
11 Волшебник
 
08.02.24
20:19
(8) Тему притопил
Ошибка? Это не ошибка, это системная функция.