Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

AW: [FMX] SOAP-Timeout(s) setzen

  Alt 20. Okt 2015, 13:45
Ja, das hatte ich schon entdeckt, auch den Kommentar
Zitat:
Delphi-Quellcode:
{ Can these be exposed when using Indy too?? }
    property ConnectTimeout: Integer read FConnectTimeout write FConnectTimeout;
    property SendTimeout: Integer read FSendTimeout write FSendTimeout;
    property ReceiveTimeout: Integer read FReceiveTimeout write FReceiveTimeout;
Das Setzen der Timeouts erfolgt an einer einzigen Stelle (THTTPReqResp.Send).
Zitat:
Delphi-Quellcode:
if FConnectTimeout > 0 then
      Check(not InternetSetOption(Request, INTERNET_OPTION_CONNECT_TIMEOUT, Pointer(@FConnectTimeout), SizeOf(FConnectTimeout)));
Ich habe eine Grep-Suche über die Indy-Sourcen laufen lassen, InternetSetOption wurde nirgends gefunden, von daher gehe ich davon aus, dass es sich um WinInet handelt.

[edit] Eben stand ich noch am Abgrund, jetzt bin ich einen Schritt weiter
Delphi-Quellcode:
var
  RIO: THTTPRIO;
  {$IFDEF POSIX}
  Handler: TIdIOHandler;
  {$ENDIF}
begin
  {$IFDEF POSIX}
  Handler := nil;
  {$ENDIF}
  RIO := THTTPRIO.Create(nil);
  try
    {$IFDEF POSIX}
    Handler := TIdIOHandler.MakeDefaultIOHandler(nil);
    RIO.HTTPWebNode.IOHandler := Handler;
    {$ENDIF}
    RIO.HTTPWebNode.{$IFDEF POSIX}IOHandler.{$ENDIF}ConnectTimeOut :=
      FConnectTimeOut;
    {$IFNDEF POSIX}RIO.HTTPWebNode.SendTimeOut := FSendTimeOut; {$ENDIF}
    RIO.HTTPWebNode.
    {$IFDEF POSIX}IOHandler.ReadTimeOut{$ELSE}ReceiveTimeOut{$ENDIF} :=
      FReceiveTimeOut;

    try
      FService := GetTestService(false, aURI, RIO);
Aaaaber... Zitat aus der Indy-Hilfe:
Zitat:
ConnectTimeout is not used in TIdIOHandler, but is provided for compatibility purposes. ConnectTimeout allows a client using a socket-based IOHandler, like TIdIOHandlerStack, to access the protocol stack to set the timeout value.

Use the ConnectTimeout property in the TIdTCPClient to set the connection timeout without specific access to an IOHandler.
Ich werd noch wahnsinnig [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (20. Okt 2015 um 14:55 Uhr)
  Mit Zitat antworten Zitat