c# webexception

c# - WebException cómo obtener una respuesta completa con un cuerpo?



(2)

En WebException no puedo ver el cuerpo de GetResponse. Este es mi código en C #:

try { return GetResponse(url + "." + ext.ToString(), method, headers, bodyParams); } catch (WebException ex) { switch (ex.Status) { case WebExceptionStatus.ConnectFailure: throw new ConnectionException(); case WebExceptionStatus.Timeout: throw new RequestTimeRanOutException(); case WebExceptionStatus.NameResolutionFailure: throw new ConnectionException(); case WebExceptionStatus.ProtocolError: if (ex.Message == "The remote server returned an error: (401) unauthorized.") { throw new CredentialsOrPortalException(); } throw new ProtocolErrorExecption(); default: throw; }

Veo el encabezado pero no veo el cuerpo. Esto se envía desde Wireshark para la solicitud:

POST /api/1.0/authentication.json HTTP/1.1 Content-Type: application/x-www-form-urlencoded Accept: application/json Host: nbm21tm1.teamlab.com Content-Length: 49 Connection: Keep-Alive userName=XXX&password=YYYHTTP/1.1 500 Server error Cache-Control: private, max-age=0 Content-Length: 106 Content-Type: application/json; charset=UTF-8 Server: Microsoft-IIS/7.5 X-AspNet-Version: 2.0.50727 X-Powered-By: ASP.NET X-Powered-By: ARR/2.5 Date: Mon, 06 Aug 2012 12:49:41 GMT Connection: close {"count":0,"startIndex":0,"status":1,"statusCode":500,"error":{"message":"Invalid username or password."}}

¿Es posible de alguna manera ver el texto del mensaje en WebException? Gracias.


try { WebClient client = new WebClient(); client.Encoding = Encoding.UTF8; string content = client.DownloadString("https://sandiegodata.atlassian.net/wiki/pages/doaddcomment.action?pageId=524365"); Console.WriteLine(content); Console.ReadKey(); } catch (WebException ex) { var resp = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd(); Console.WriteLine(resp); Console.ReadKey(); }


var resp = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd(); dynamic obj = JsonConvert.DeserializeObject(resp); var messageFromServer = obj.error.message;