Hi
In een applicatie worden requests gedaan naar een API. Eén van die requests duurt altijd wat langer maar duurde onlangs langer dan normaal met als gevolg een exception "12002" timeout. Achteraf bleek het request toch goed uit te zijn gevoerd met een juiste statuscode, alleen dus niet binnen de default tijdlimiet.
Oplossing is de timeout verhogen, maar wanneer is deze hoog genoeg? Dat blijft een gok.
Vraag: kan je na het ontvangen van een exception timeout in een loop alsnog een statuscode terugkrijgen totdat deze een gewenste code teruggeeft? bijv:
Code:
var
i, j: integer;
begin
i := 0;
try
RESTRequest.Execute;
except
on E:ERESTException do
begin
if AnsiContainsText( E.Message, '(12002)' ) then
begin
for i := 0 to 10 do // maximaal 10 pogingen om de statuscode op te vragen na een timeout
begin
if RESTRequest.Response.StatusCode = 0 then
begin
for j := 0 to 10 do // 10 seconden wachten voordat we opnieuw de statuscode opvragen
sleep(1000);
end
else
break;
end;
end
end;
end;
end;
Bookmarks