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


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.