Forum: PC-Programmierung (VB.net) WebClient -> Bessere Fehlerauswertung


You were forwarded to this site from EmbDev.net. Back to EmbDev.net
von Rutz (Gast)


Lesenswert?

Hallo Leute,

Ich benutze den WebClient um Daten ins Netz zu stellen und auch zu 
holen.
(Wordpress / RestAPI)

Mein Code ist wie folgt:
1
Dim wc As New WebClient()
2
    
3
try
4
  ResponseJson = wc.DownloadString(ApiCall)
5
ex As WebException
6
  ErrorCode = ex.Message
7
  If Not IsNothing(ex.InnerException) Then
8
    ErrorCode = ErrorCode & " -> " & ex.InnerException.ToString
9
  End If
10
end try

Wenn ein Fehler auftritt, bekomme ich da dann z.Bsp. folgende Meldungen:
1
Der Remoteserver hat einen Fehler zurückgegeben: (404) Nicht gefunden.
2
Der Remoteserver hat einen Fehler zurückgegeben: (401) Nicht autorisiert.

Wenn ich aber das Programm Postman verwende, gibt mir das weit genauere 
Auskunft.
Z.Bsp. Benutzer/Passwort falsch, ...

Wie komme ich zu den erweiterten Fehlertexten des WebClients?

von Εrnst B. (ernst)


Lesenswert?

Rutz schrieb:
> Wie komme ich zu den erweiterten Fehlertexten des WebClients?

Das sind keine Fehlertexte des "WebClients", das ist der Response-Body, 
den der Webserver zusätzlich zum (z.B.) "404 Not Found" Status 
zurückmeldet.

der WebClient liest den per Default nicht aus, sondern schmeißt die 
Exception bei Nicht-OK Statuscodes.

Über die Exception kommst du an das "Response"-Objekt, ex.Response:
https://learn.microsoft.com/en-us/dotnet/api/system.net.webexception.response?view=net-7.0#system-net-webexception-response


Über das Response-Objekt kommst du an den ResponseStream 
(GetResponseStream())
https://learn.microsoft.com/en-us/dotnet/api/system.net.webresponse.getresponsestream?view=net-7.0#system-net-webresponse-getresponsestream

Auf diesen kannst du einen StreamReader ansetzen, und per ReadLine() 
oder ReadToEnd() usw. deine Fehlermeldung auslesen.

https://learn.microsoft.com/en-us/dotnet/api/system.io.streamreader.readtoend?view=net-7.0#system-io-streamreader-readtoend

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.