sexta-feira, abril 06, 2012

TimeOut TSoapConnection

Salve,

Essa semana enfrentei um sério transtorno com erro de TimeOut em um Webservice consumido via SoapConnection. Depois pesquisar bastante descobri que o tempo de retorno de um Webservice é algo definido pelo Windows, e que a atualização do Internet Explorer pode alterar tal configuração. A boa notícia é que dá pra configurar isso via Delphi, invocando uma procedure disponível na unit WinInet. Bom chega de prosa e vamos à solução!

No componente TSoapConnection, procure pelo evento OnBeforeExecute, e codifique-o conforme exemplo abaixo:


procedure TForm1.soapConnBeforeExecute(
  const MethodName: String; var SOAPRequest: WideString);
  var timeOut: Integer;
begin
  timeOut := 360000;
  InternetSetOption(nil, INTERNET_OPTION_RECEIVE_TIMEOUT, pointer(@timeOut), sizeof(timeOut));
end;


Não se esqueça de adicionar na cláusula Uses a unit WinInet.

Té+