C#使用WebClient时,如果状态码不为200时,如何获取请求返回的内容
2021-01-22 18:13
标签:url == test ati enc 获取数据 status res ref 目录 使用WebClient发送请求,如果返回的状态码不是2xx或3xx,那么默认情况下会抛出异常, 可以通过try catch获取到WebException类型的异常; 方法二:捕获 Exception 异常,然后再判断异常类型; C#使用WebClient时,如果状态码不为200时,如何获取请求返回的内容 标签:url == test ati enc 获取数据 status res ref 原文地址:https://www.cnblogs.com/willingtolove/p/12078698.html
一、事故现场
那如何才能获取到请求返回的内容呢?二、解决方法
[HttpGet("test")]
public ActionResult test()
{
Response.StatusCode = 401;
return Content("test");
}
方式一:直接捕获WebException 类型异常; public static string WebClientGetRequest(string url)
{
try
{
using (WebClient client = new WebClient())
{
//设置编码格式
client.Encoding = System.Text.Encoding.UTF8;
//获取数据
var result = client.DownloadString(url);
return result;
}
}
catch (WebException ex)
{
using (HttpWebResponse hr = (HttpWebResponse)ex.Response)
{
int statusCode = (int)hr.StatusCode;
StringBuilder sb = new StringBuilder();
StreamReader sr = new StreamReader(hr.GetResponseStream(), Encoding.UTF8);
sb.Append(sr.ReadToEnd());
Console.WriteLine("StatusCode:{0},Content:{1}", statusCode, sb);// StatusCode:401,Content:test
}
return "";
}
}
public static string WebClientGetRequest(string url)
{
try
{
using (WebClient client = new WebClient())
{
//设置编码格式
client.Encoding = System.Text.Encoding.UTF8;
//获取数据
var result = client.DownloadString(url);
return result;
}
}
catch (WebException ex)
{
if (ex.GetType().Name == "WebException")
{
WebException we = (WebException)ex;
using (HttpWebResponse hr = (HttpWebResponse)we.Response)
{
int statusCode = (int)hr.StatusCode;
StringBuilder sb = new StringBuilder();
StreamReader sr = new StreamReader(hr.GetResponseStream(), Encoding.UTF8);
sb.Append(sr.ReadToEnd());
Console.WriteLine("StatusCode:{0},Content:{1}", statusCode, sb);// StatusCode:401,Content:test
}
}
return "";
}
}
上一篇:WPF之行为
文章标题:C#使用WebClient时,如果状态码不为200时,如何获取请求返回的内容
文章链接:http://soscw.com/index.php/essay/45538.html