Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi idHTTP und Listview-Durchlauf//Auf Serverantwort warten (https://www.delphipraxis.net/111519-idhttp-und-listview-durchlauf-auf-serverantwort-warten.html)

MCXSC 4. Apr 2008 16:48


idHTTP und Listview-Durchlauf//Auf Serverantwort warten
 
Hallo,

folgenden Code verwende ich um an einem Returncode zu gelangen:

Delphi-Quellcode:
function ReadReturncode(URL: String): String;
begin
  try
    Result := idHTTP1.Get(URL);
  except
    Exit;
  end;
end;
Nun lasse ich eine Listview durchlaufen, aus deren Caption wird die URL gebildet. Das funktioniert auch soweit.

Delphi-Quellcode:
procedure Listedurchlaufen;
var
  Titel, Returncode: String;
  i: Integer;
begin
  with Mainform do begin
    for i:=0 to ListView.Items.Count-1 do begin
      Returncode := ReadReturncode('http://www.domain.de/index.php?titel='+ListView.Items[i].Caption;
      Showmessage(Returncode);
    end;
  end;
end;
Das Problem: Der Durchlauf der Einträge und die Übergabe des Listview-Eintrags ist zu schnell, als dass der HTTP-Server für jeden einen Code zurückgeben kann.

Wie bekomme ich es hin, dass er der nächste Eintrag durchlaufen wird, wenn die Serveranfrage aus "ReadReturncode" fertig ist?

shmia 4. Apr 2008 17:27

Re: idHTTP und Listview-Durchlauf//Auf Serverantwort warten
 
Du solltest nicht die GET-Methode, sondern die HEAD-Methode benützen, um an den HTTP Status zu kommen:
Delphi-Quellcode:
function GettHTTP_Status(const URL: String): String; // Ersatz für ReadReturncode
begin
  try
    Result := idHTTP1.Head(URL);
  except
    E:Exception do
      result := E.Message;
  end;
end;
So wird nicht das ganze Dokument, sondern nur der Status (200 = OK, 404 = nicht vorhanden, ...) abgerufen.
Das ist viel schneller ;-)

MCXSC 4. Apr 2008 17:44

Re: idHTTP und Listview-Durchlauf//Auf Serverantwort warten
 
Zitat:

Zitat von shmia
Du solltest nicht die GET-Methode, sondern die HEAD-Methode benützen, um an den HTTP Status zu kommen:
Delphi-Quellcode:
function GettHTTP_Status(const URL: String): String; // Ersatz für ReadReturncode
begin
  try
    Result := idHTTP1.Head(URL);
  except
    E:Exception do
      result := E.Message;
  end;
end;
So wird nicht das ganze Dokument, sondern nur der Status (200 = OK, 404 = nicht vorhanden, ...) abgerufen.
Das ist viel schneller ;-)

Mal abgesehen davon, passiert würde da imho das Gleiche passieren. Und nein: Ich brauche das GET, da ein paar mySQL-Querys ausgeführt werden und ich daher Returncodes (z.B. 1=existiert schon; 2=eingetragen; 3=unbekannter fehler; etc.)...

DataCool 6. Apr 2008 01:23

Re: idHTTP und Listview-Durchlauf//Auf Serverantwort warten
 
Hi,

ich würde das ganze in einen oder mehrere Threads(einer je URL) auslagen.

Greetz Data


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz