Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   TNetHTTPRequest.Get im Fehlerfall (https://www.delphipraxis.net/203392-tnethttprequest-get-im-fehlerfall.html)

TurboMagic 13. Feb 2020 10:49

TNetHTTPRequest.Get im Fehlerfall
 
Hallo,

wir nutzen Delphi 10.3.2 und wollen mittels TNetHTTPRequest.Get etwas via HTTPS herunterladen.
Wir wollen das noch etwas absichern und führen daher eine zertifikatsprüfung durch
(wir prüfen einfach den Namen) und lassen die zu Testzwecken gerade scheitern.

An der Stelle wo wir Get aufrufen bekommen wir eine IHTTPResponse zurück.
In unserem negativ Testfall gibt's dann innerhalb der get eine Exception, die dort
aber behandelt wird.

Versuchen wir dann aber auf Felder der zurückgegebenen IHTTPResponse zuzugreifen
(v.a. auf StatusCode) kracht es mit

"---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt LisaNT.exe ist eine Exception der Klasse ENetHTTPException mit der Meldung
'Fehler beim Abrufen der Header: (6) Das Handle ist ungültig' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------"

Wie bekommen wir in dem Fall mit (ohne generisch die ENetHTTPException im except Block abzufragen),
dass diese Info nicht zur verfügung steht?

himitsu 13. Feb 2020 12:03

AW: TNetHTTPRequest.Get im Fehlerfall
 
Bekommt ihr im Fehler da überhaupt etwas zurück?
Wenn nicht, dann nicht auf das ungültige Result zugreifen, sondern mal nachsehn, ob das TNetHTTPRequest noch irgendwo eine Info zur letzten Abfrage bereitstellt.

Ansonsten:
Try-Except
Delphi-Quellcode:
except
  on E: ENetHTTPException do
    ...
  else
    raise;
end;

// aka

except
  on E: Exception do
    if E is ENetHTTPException then
      ...
    else
      raise;
end;
oder mal nachsehen, ob die THTTP-Dinger nicht irgendw anbieten ein OnException-Methode zu registrieren, bzw. ob es dort Optionen gibt, womit man regeln kann wie diese Komponenten auf bestimmte Fehler reagieren.

hoika 13. Feb 2020 15:04

AW: TNetHTTPRequest.Get im Fehlerfall
 
Hallo,
hier steht was von OnRequestError

http://docwiki.appmethod.com/appmeth...r_HTTP-Antwort

TurboMagic 13. Feb 2020 17:32

AW: TNetHTTPRequest.Get im Fehlerfall
 
Ja, das sollten wir uns mal anschauen, danke!
Was an der Doku doof ist (ist im richtigen Dokwiki, du verlinktest ja das von AppMethod, auch nicht besser),
ist, dass der Typ des Fehlerevents nicht verlinkt ist und wenn man den mit etwas Suche weiter oben in der
Hierarchie gefunden hat, dann ist die Syntax dort nur in C++ angegeben... :-(
Hat man gerade kein Delphi in der Hand dauert das Verständnis somit etwas länger.

Luckie 13. Feb 2020 17:42

AW: TNetHTTPRequest.Get im Fehlerfall
 
Habe ich bei der Delphi Hilfe auch schon festgestellt, da ist zwar immer beides angegeben, aber C++ immer als erstes. Dabei nutzen wohl die wenigsten Delphi zur C++ Entwicklung.

TurboMagic 13. Feb 2020 22:18

AW: TNetHTTPRequest.Get im Fehlerfall
 
Naja, beides angezeigt wäre ja ok,
aber in dem Thema steht es nur in C++ Syntax.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:16 Uhr.

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