Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   TRestRequest HTTP Exception unter 500 abfangen (https://www.delphipraxis.net/193445-trestrequest-http-exception-unter-500-abfangen.html)

stalkingwolf 1. Aug 2017 13:49

TRestRequest HTTP Exception unter 500 abfangen
 
Ich habe mich schon gewundert warum meine Kunden bei einer falsch eingegeben URL keine Fehlermeldung erhalten haben und ich habe mir die RestClient Komponente angeschaut.
In executewerden Exceptions abgefangen und nur weitergegeben wenn sie über 500 sind und ein Eigenschaft RestClient.RaiseExceptionOn500 auf TRUE sitzt.

Auszug daraus
Code:
 except
        // any kind of server/protocol error
        on E: EHTTPProtocolException do
        begin
          FExecutionPerformance.ExecutionDone;
          // we keep measuring only for protocal errors, i.e. where the server actually anwered, not for other exceptions.
          LContent := E.ErrorMessage; // Full error description

          //Fill RESTResponse with actual response data - error handler might want to access it
          ProcessResponse(LURL, LResponseStream, LContent);

          [B]if (E.ErrorCode >= 500) and Client.RaiseExceptionOn500 then
            raise ERESTException.Create(E.Message);[/B]
          HandleEvent(DoHTTPProtocolError);
        end;
Wie kann ich Fehler unter 500 abfangen? Weil mein try..error um das execute wird nicht ausgeführt

himitsu 1. Aug 2017 13:55

AW: TRestRequest HTTP Exception unter 500 abfangen
 
RestClient.OnHTTPProtocolError implmentieren (siehe DoHTTPProtocolError) :zwinker:
http://docwiki.embarcadero.com/Libra...PProtocolError

oder anschließend den Content der fehlerhaften Abfrage ansehen. (siehe ProcessResponse)


Dieses Execute gibt nur "schwerwiegende" Server-Fehler ins Programm raus, wenn >500 aktiviert, aber Client-Fehler und kleine Serverproblemchen werden im Error-Event behandelt.

stalkingwolf 1. Aug 2017 13:57

AW: TRestRequest HTTP Exception unter 500 abfangen
 
Ne ist RESTRequest1HTTPProtocolError.
Aber dort steht in errorMessage nichts drin und in Content die HTML Meldung.
Ich würde aber gern den Fehler korrekt abfangen und darauf reagieren.
In getLastError steht immer 0 drin.

Mir geht es darum das Kunden in Ihren Pads die falschen URLs eintippen und ich das bei der Einstellung schon abfangen möchte ob diese korrekt sind.

himitsu 1. Aug 2017 14:03

AW: TRestRequest HTTP Exception unter 500 abfangen
 
MSDN-Library durchsuchenGetLastError ?

Das ist natürlich nur für Fehler in Funktionen der WinAPI.



Du hast halt nicht die große Wahl.

Zitat:

Delphi-Quellcode:
HandleEvent(DoHTTPProtocolError);

Also entweder OnHTTPProtocolError,
Zitat:

Delphi-Quellcode:
// we keep measuring only for protocal errors, i.e. where the server actually anwered, not for other exceptions.
LContent := E.ErrorMessage; // Full error description
//Fill RESTResponse with actual response data - error handler might want to access it
ProcessResponse(LURL, LResponseStream, LContent);

oder Response-Content.

Und alles was keine EHTTPProtocolException ist, wird von diesem Code eh nicht behandelt.

stalkingwolf 1. Aug 2017 14:15

AW: TRestRequest HTTP Exception unter 500 abfangen
 
Ok dann parsen wir HTML Code.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:26 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