Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.532 Beiträge
 
Delphi 7 Professional
 
#10

AW: EIdSocketError #10053 In Webbroker

  Alt 5. Mai 2023, 18:22
Die Fehlermeldung heißt eigentlich nur, dass die Gegenseite die Verbindung abgebrochen hat.

Innerhalb von Indy kannst Du das Problem nicht beheben, da müssten wir mal den Quelltext sehen, der für den Aufruf, die Verbindung, ... zuständig ist, sowas wie sContent := http.get('www.irgendwas.com'); Was ich (sinngemäß und hier nur hingedaddelt) grundsätzlich mache, um Folgefehler zu reduzieren:
Delphi-Quellcode:
iError := 0;
repeat
  try
    http.Get('ne url',EinStream);
    // Daten verarbeiten ...
    break;
  except
    on e : EIdSocketError do begin
      iError := iError + 1;
      http.Disconnect(True);
      http.IOHandler.InputBuffer.Clear;
      continue;
    end;
    // weitere Fehler abfangen
    // ...
    // und zum Schluss dann noch die "Reste"
    on e : Exception do begin
      iError := iError + 1;
       // sinnvolle Fehlerbehandlung, Fehler ggfls. protokollieren.
       // Fehlerabhängig ggfls. per break aus der Schleife raus,
       // z. B. bei ResponseCode 403 oder 404
       // oder ResponseCodes aus dem 300er-Bereich.
    end;
  end;
  // Aufräumen!!! - ohne dies kann bei einigen Fehler "irgendwas" übrigbleiben,
  // was eine weitere, sinnvolle Arbeit des Programmes unmöglich macht.
  // Die Interna kenn' ich nicht, so dass ich nicht weiß, warum es ohne die
  // zwei Zeilen zuweilen nicht ordentlich weiterläuft.
  http.Disconnect(True);
  http.IOHandler.InputBuffer.Clear;
until (iError > 5);
Im Fehlerfalle behalten ResponseNo und ResponseText (zuweilen, meist, immer?) den Inhalt vom letzten erfolgreichen Aufruf vor dem Fehler, haben hier also genau keine Aussagekraft. Im Zweifel vorher Werte zuweisen, an denen du erkennen kannst: Sind sie unverändert, dann ist das was schiefgelaufen.
  Mit Zitat antworten Zitat