Перейти к содержимому
Участник сообщества #60
Участник сообщества #60
6 нояб. 2024 г., 22:43(изменён)
Решено
0
0

Проблема с таймаутом HTTP-запросов

Из чата сообщества

Всем привет! Если у кого-то возникнет проблема при выполнении HTTP запросов с помощью встроенной функции HttpRequest, когда долгий запрос отвалится через 30—35 секунд (может быть очень некстати при интеграциях), то следует использовать dll по адресу dotnetcore/libs/WebSoftHttpRequest.dll следующим образом:

var timeoutSeconds = 180;
var requestDll = tools.get_object_assembly("HttpRequest");
var response = requestDll.Open("http://localhost/custom/timeout_api.html", "get", "", "", null, null, timeoutSeconds);

Поддержка при обращении не помогает, а предлагает доработать удаленную систему так, чтобы она, например, сразу писала в ответ пустую строку, затем выполняла какие-то долгие операции и дописывала в ответ итоговый контент (это работает), а потом закрывает обращение с предложением расширенной поддержки. В документации в функции get_object_assembly вообще не указана dll WebSoft.HttpRequest.

image_2024-11-07_02-43-19.png
Участник сообщества
Участник сообщества6 нояб. 2024 г., 22:43(изменён)
Решение

Пришлось копать код в папке с сервером и декомпилировать найденную dll, которая, оказывается умеет принимать больше аргументов, в т.ч. таймаут, который и решает проблему. При этом встроенная функция HttpRequest не использует данную dll по моим опытам, т.к. на патчинг ни в каком виде не реагирует. То есть добавлять к ней доп. параметры не прокатит

Чтобы ответить, необходимо войти в систему