有没有办法提取作为WebException的一部分发回的文本,HttpWebResponse会发生?我可以获取所有标头信息,但是如果可能的话,我会返回400或401响应的自定义消息。我目前正在我的测试中处理异常,如下所示:
var ex = Assert.Throws<WebException>(() =>
{
HttpWebResponse response = Utils.GetRawResponse(url);
});
Assert.Contains("401", ex.Message);
以下是获得回复的方式:
public static HttpWebResponse GetRawResponse(string requestURL)
{
HttpWebRequest request = WebRequest.Create(requestURL) as HttpWebRequest;
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
return response;
}
这样可行,但没有自定义消息。
Top希望能更明确一点,我指的是屏幕截图底部的消息文字:
答案 0 :(得分:0)
处理异常时,请尝试以下方法:
if(ex.Response.ContentLength>0)
{
string ResponseBody = (new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
// Do whatever you want with the ResponseBody
}
(类似于http://msdn.microsoft.com/en-us/library/system.net.httpwebresponse.contentlength(v=vs.110).aspx中的例子)
关键是WebException有一个Response属性:http://msdn.microsoft.com/en-us/library/system.net.webexception.response(v=vs.110).aspx
答案 1 :(得分:0)
使用Gusmans提醒我创建了一个从WebException中提取响应的方法:
public static string ParseExceptionRespose(WebException exception)
{
string responseContents;
Stream descrption = ((HttpWebResponse)exception.Response).GetResponseStream();
using (StreamReader readStream = new StreamReader(descrption))
{
responseContents = readStream.ReadToEnd();
}
return responseContents;
}