AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke IdHTTP Post Request -> dann Zeit abwarten bis Response
Thema durchsuchen
Ansicht
Themen-Optionen

IdHTTP Post Request -> dann Zeit abwarten bis Response

Ein Thema von bogdan · begonnen am 26. Jun 2017 · letzter Beitrag vom 11. Mai 2020
 
nahpets
(Gast)

n/a Beiträge
 
#8

AW: IdHTTP Post Request -> dann Zeit abwarten bis Response

  Alt 26. Jun 2017, 21:34
Ok, die Aufgabenstellung klingt vernünftig, da hab' ich dann nix mehr zu meckern

Hier ein Quelltext, den ich für idHTTP.Get nutze, mit ein bisserl Fehlertoleranz:
Delphi-Quellcode:
function MyHTTPGet(sURL : String; slHTML : TStrings; slAHRef : TStrings; var sMessage : String; iRedirect : Integer) : Boolean;
var
          iError : Integer;
begin
  Result := False;
  sMessage := 'ok';
  dmPascalScript.WebIndex.Clear;
  slHTML.Clear;
  slAHref.Clear;
  iError := 0;
  repeat
    try
      dmPascalScript.http.RedirectMaximum := iRedirect;
      dmPascalScript.http.HandleRedirects := iRedirect <> 0;
      dmPascalScript.WebIndex.HTML.Add(dmPascalScript.http.Get(sUrl));
      dmPascalScript.http.Disconnect(True);
      dmPascalScript.http.IOHandler.InputBuffer.Clear;
      Result := True;
    except
      on e : Exception do begin
        sMessage := AnsiReplaceText(e.Message,#13#10,' ');
        if e.Message = 'Connection Closed Gracefully.then begin
          Inc(iError);
        end else begin
          iError := MaxInt;
          case dmPascalScript.http.ResponseCode of
            301, 302 : begin
                    dmPascalScript.PSReg.WriteAppLog(Format('Scriptaufruf : HTTPGet(%s)',[sUrl]));
                    dmPascalScript.PSReg.WriteAppLog(Format('Fehlermeldung: %s',[sMessage]));
                    dmPascalScript.PSReg.WriteAppLog(Format('Location : %s',[dmPascalScript.http.Response.Location]));
                  end;
          else
            dmPascalScript.PSReg.WriteAppLog(Format('Scriptaufruf : HTTPGet(%s)',[sUrl]));
            dmPascalScript.PSReg.WriteAppLog(Format('Fehlermeldung: %s',[sMessage]));
            dmPascalScript.PSReg.WriteAppLog(Format('ResponseCode : %d',[dmPascalScript.http.ResponseCode]));
          end;
        end;
        dmPascalScript.http.Disconnect(True);
        dmPascalScript.http.IOHandler.InputBuffer.Clear;
      end;
    end;
  until Result or (iError > 4);
  if Result then begin
    dmPascalScript.WebIndex.PrepareHtmlText;
    dmPascalScript.WebIndex.GetHeader;
    dmPascalScript.WebIndex.GetBody;
    dmPascalScript.WebIndex.GetAHRef;
    slHTML.AddStrings(dmPascalScript.WebIndex.HTML);
    slAHRef.AddStrings(dmPascalScript.WebIndex.AHRef);
  end;
end;
WebIndex ist ein Parser, der den Quelltext der HTML-Seiten in eine Form umwandelt, die eine (halbwegs) automatische Weiterverarbeitung zulässt.

dmPascalScript ist ein Datenmodul, dessen Komponenten genutzt werden.

slHTML enthält den aufbereiteten Inhalt der Webseite, slAHref enthält alle in der Webseite gefundenen Links.

Die Routine selbst wird über Pascalscript aus 'nem Programm aufgerufen, dass u. a. der automatischen Auswertung von Webseiten dient.

In dem Case-Block könntest Du dann eventuell noch die 503 abfragen. und da ein Sleep einbauen.

Schau mal bitte, ob der von Dir gesuchte Inhalt eventuell in idhttp.ResponseText zu finden ist. idHTTP.ResponseCode müsste die 503 enthalten.

Hast Du mal geschaut, ob in der Variabel, in die Du mit idHTTP.Get('url') den Inhalt der Webseite bekommen kannst, nicht auch im Fehlerfalle was drinne steht.

Hier im Beispiel müsste dann der Quelltext der Fehlerseite in slHTML zu finden sein.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:41 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