有没有办法从WebException中提取消息?

时间:2014-04-24 23:40:11

标签: c# httpwebresponse

有没有办法提取作为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希望能更明确一点,我指的是屏幕截图底部的消息文字:   enter image description here

2 个答案:

答案 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;

    }
相关问题