在WebException中,我看不到GetResponse的主体。这是我在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; }
我看到标题,但看不到正文。这是来自Wireshark的请求输出:
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."}}
是否有可能以某种方式在WebException中看到消息文本?谢谢。
var resp = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd(); dynamic obj = JsonConvert.DeserializeObject(resp); var messageFromServer = obj.error.message;