Веб-сервис приводит к таймауту ошибок в Delphi

У меня есть клиентское приложение, которое выполняет запросы SOAP. Я установил тайм-аут на 20 минут. Однако иногда я вижу, что ошибка из-за тайм-аута происходит после 10 секунд. У меня есть следующее в коде:

RIO.HTTPWebNode.ReceiveTimeout := 1200000

Сделайте я должен установить ConnectTimeout и SendTimeOut? В настоящее время они установлены на значения по умолчанию 0. Что различие было бы, устанавливая их сделать?

Я использую Delphi 2007.

Рассмотрение далее сообщения об ошибке, я вижу, что получаю "Операцию, приведенную к таймауту....". Так должен я установить мой ReceiveTimeOut обнулять, так как я действительно не хочу тайм-аута вообще?

6
задан mjn 17 July 2011 в 05:36
поделиться

1 ответ

Реализация CodeGear SOAPHTTPTrans устанавливает тайм-ауты глобально, а не для каждого сеанса. Вот соответствующий код из THTTPReqResp.Send :

{ Timeouts }
if FConnectTimeout > 0 then
  Check(not InternetSetOption({Request}nil, INTERNET_OPTION_CONNECT_TIMEOUT, Pointer(@FConnectTimeout), SizeOf(FConnectTimeout)));
if FSendTimeout > 0 then
  Check(not InternetSetOption({Request}nil, INTERNET_OPTION_SEND_TIMEOUT, Pointer(@FSendTimeout), SizeOf(FSendTimeout)));
if FReceiveTimeout > 0 then
  Check(not InternetSetOption({Request}nil, INTERNET_OPTION_RECEIVE_TIMEOUT, Pointer(@FReceiveTimeout), SizeOf(FReceiveTimeout)));

Мне пришлось использовать обработчик OnBeforePost для установки тайм-аутов:

transport.OnBeforePost := configureHttpRequest;

procedure Tsomething.configureHttpRequest(const HTTPReqResp: THTTPReqResp; Data: Pointer);
begin
  InternetSetOption(Data, INTERNET_OPTION_CONNECT_TIMEOUT, Pointer(@FconnectTimeoutMS), SizeOf(FconnectTimeoutMS));
  InternetSetOption(Data, INTERNET_OPTION_SEND_TIMEOUT, Pointer(@FsendTimeoutMS), SizeOf(FsendTimeoutMS));
  InternetSetOption(Data, INTERNET_OPTION_RECEIVE_TIMEOUT, Pointer(@FreceiveTimeoutMS), SizeOf(FreceiveTimeoutMS));
end;

Документация MSDN для этих параметры находятся на http://msdn.microsoft.com/en-us/library/aa385328%28VS.85%29.aspx

8
ответ дан 16 December 2019 в 21:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: