此文章发布于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;
}