Witam
Mam napisaną aplikację WebServices w Delphi 6 opartą o komponent HTTPRIO.
Niestety gdy przesyłane dane są zbyt duże, to połączenie zrywa po 30 sekundach.
Czy da się jakoś zwiększyć timeout w tym przypadku?
Witam
Mam napisaną aplikację WebServices w Delphi 6 opartą o komponent HTTPRIO.
Niestety gdy przesyłane dane są zbyt duże, to połączenie zrywa po 30 sekundach.
Czy da się jakoś zwiększyć timeout w tym przypadku?
ustaw wcześniej w kodzie timeouty
spróbuj najpierw
HTTPRIO.HTTPWebNode.SendTimeout := 120000;
HTTPRIO.HTTPWebNode.ConnectTimeout := 120000;
HTTPRIO.HTTPWebNode.ReceiveTimeout := 120000;
a jak nie podziała (w którejś wersji Delphi był błąd) to to powinno dać radę
InternetSetOption(nil, INTERNET_OPTION_CONNECT_TIMEOUT, Pointer(@conntimeout), SizeOf(conntimeout));
InternetSetOption(nil, INTERNET_OPTION_SEND_TIMEOUT, Pointer(@sendtimeout), SizeOf(sendtimeout));
InternetSetOption(nil, INTERNET_OPTION_RECEIVE_TIMEOUT, Pointer(@recvtimeout), SizeOf(recvtimeout));
czasy są w milisekundach
Niestety moje HTTPRIO nie ma takich opcji, jak SendTimeout, ConnectTimeout i ReceiveTimeout.
Może idzie jakoś ściągnąć nowszą wersję tego HTTPRIO do Delphi 6, gdzie te opcje byłyby już dostępne?
Jeśli chodzi o drugie rozwiązanie, to też nie wyszło...
do ostatniego
uses wininet;
Jesteś wielki!
Już chciałem ci odpisać, że nie działa, bo kod ten wstawiłem pod jeden z przycisków i nadal zrywało po 30 sekundach.
Jednak gdy wstawiłem go do funkcji HTTPRIOBeforeExecute, to zadziałało!
procedure Tf_qp.HTTPRIOBeforeExecute(const MethodName: String;
var SOAPRequest: WideString);
var
timeout:integer;
begin
timeout:=120000;
InternetSetOption(nil, INTERNET_OPTION_CONNECT_TIMEOUT, Pointer(@timeout), SizeOf(timeout));
InternetSetOption(nil, INTERNET_OPTION_SEND_TIMEOUT, Pointer(@timeout), SizeOf(timeout));
InternetSetOption(nil, INTERNET_OPTION_RECEIVE_TIMEOUT, Pointer(@timeout), SizeOf(timeout));
end;
Jak przyjedziesz kiedyś do Rybnika, to stawiam piwo :)
Nawet nie wiesz, jak wielkie to ma znaczenie dla działania naszej firmy :)
OK :D