C# HttpWebRequest 异常时获取 HttpWebResponse 数据

此文章发布于 59 个月前,部分信息可能已经过时,请自行斟酌确认。

最近在做七牛云短信api 集成工作,遇到一个问题:

使用 C#HttpWebRequest 请求接口如果接口返回了 401 则会抛出异常,而 401 其实也有可能返回正常的响应数据,如何获取异常时的响应流?

解决方案

捕获 WebException 异常,通过 ex.Response 获取 HttpWebResponse

主要代码如下:

private string Request(string url, string method, byte[] body, string contentType)
{
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
    HttpWebResponse resp;
    try
    {
        resp = (HttpWebResponse)req.GetResponse();
    }
    catch (WebException ex)
    {
        resp = (HttpWebResponse)ex.Response; //解析401等错误返回的有效信息
    }

    Stream stream = resp.GetResponseStream();
    using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
    {
        result = reader.ReadToEnd();
    }
    return result;
}
最后修改:2019 年 12 月 26 日 03 : 28 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论