C#使用WebClient时,如果状态码不为200时,如何获取请求返回的内容
一、事故现场
使用WebClient发送请求,如果返回的状态码不是2xx或3xx,那么默认情况下会抛出异常,
那如何才能获取到请求返回的内容呢?
二、解决方法
可以通过try catch获取到WebException类型的异常;
- api接口:
[HttpGet("test")]
public ActionResult test()
{
Response.StatusCode = 401;
return Content("test");
}
- 使用WebClient发送请求:
方式一:直接捕获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 "";
}
}
方法二:捕获 Exception 异常,然后再判断异常类型;
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 "";
}
}
C#使用WebClient时,如果状态码不为200时,如何获取请求返回的内容的更多相关文章
- (网页)Http状态码大全(200、404、500等)(转CSDN)
当我们从客户端向服务器发送请求时 服务器向我们返回状态码 状态码就是告诉我们服务器响应的状态 通过它,我们就可以知道当前请求是成功了还是出现了什么问题 状态码是由3位数字和原因短语组成的(比如最常见的 ...
- http状态码204/206/200/302/303/307
HTTP的状态码有很多种,主要有1xx(临时响应).2xx(成功).3xx(已重定向).4xx(请求错误)以及5xx(服务器错误)五个大类,每个大类还对应一些具体的分类.平时我们接触比较多的是200. ...
- HTTP状态码100、200、300、400、500、600的含义
1xx (临时响应)表示临时响应并需要请求者继续执行操作的状态代码. 100 (继续) 请求者应当继续提出请求. 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分. 101 (切换协议) 请 ...
- Http状态码大全(200、404、500等)
基本涵盖了所有问题 HTTP 400 – 请求无效HTTP 401.1 – 未授权:登录失败HTTP 401.2 – 未授权:服务器配置问题导致登录失败HTTP 401.3 – ACL 禁止访问资源H ...
- 浏览器对于常见HTTP状态码的反应
在我们向服务器发送一个HTTP请求时,会经历tcp连接(三次握手),发送HTTP请求,服务器返回HTTP响应,浏览器对响应中的状态码进行分析判断,来确定请求是否成功,是否成功得到我们需要的信息. 那么 ...
- JSP中HTTP状态码
以下内容引用自http://wiki.jikexueyuan.com/project/jsp/http-status-codes.html: HTTP请求格式和HTTP响应消息的格式一样,都有以下结构 ...
- HTTP常用状态码分析
不管是面试还是工作中,经常会碰到需要通过HTTP状态码去判断问题的情况,比如对于后台RD,给到前端FE的一个接口,出现502或者504 error错误,FE就会说接口存在问题,如果没有知识储备,那就只 ...
- HTTP各状态码解释
状态码 含义 100 客户端应当继续发送请求.这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应.服务器必 ...
- HTTP状态码(HTTP Status Code)
一些常见的状态码为: 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务不可用 所有状态解释: 1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码. 代码 说 ...
随机推荐
- HTML学习 day04
1.字体.文本声明 声明语句必须要包含在{}号之中: 属性和属性值之间用":"分隔: 当有多个属性时,用":"进行区分: 在书写属性时属性之间使用空格.换行等, ...
- 开始你的api:NetApiStarter
在此之前,写过一篇 给新手的WebAPI实践 ,获得了很多新人的认可,那时还是基于.net mvc,文档生成还是自己闹洞大开写出来的,经过这两年的时间,netcore的发展已经势不可挡,自己也在不断的 ...
- 分布式存储Minio集群环境搭建
MinIO 分布式集群搭建 分布式 Minio 可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务.由于硬盘分布在不同的节点上,分布式 Minio 避免了单点故障. Minio 分布式模式可 ...
- CentOS6下安装zabbix3.4
安装环境 系统 Centos6.7,最小化安装 CPU 2核 内存 2G 硬盘 200G IP 192.168.100.168/24 主机名 zabbix Zabbix版本 3.4 数据库 mysql ...
- 07-kubernetes Ingress 原理 和 Ingress-nginx 案例
目录 Service 类型 namespace 名称空间 Ingress Controller Ingress Ingress-nginx 进行测试 创建对应的后端Pod和Service 创建 Ing ...
- Linux网络相关、firewalld和netfilter、netfilter5表5链介绍、iptables语法 使用介绍
第7周第3次课(5月9日) 课程内容: 10.11 Linux网络相关10.12 firewalld和netfilter10.13 netfilter5表5链介绍10.14 iptables语法 扩展 ...
- python_爬虫
1.网络爬虫 1.定义:网络蜘蛛,网络机器人,抓取网络数据的程序 2.总结:用Python程序去模仿人去访问网站,模仿的越逼真越好 3.目的:通过有效的大量的数据分析市场走势,公司的 ...
- NFS服务部署
NFS介绍 NFS基本概述 NFS(Network File System)网络文件系统主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录.NFS系统和Windows网络共享.网络驱动器 ...
- spring redis学习笔记
1.下载: https://github.com/MicrosoftArchive/redis/releases,并解压文件; 2.双击redis-server.exe,运行redis服务器; 3.双 ...
- 手撕 JVM 垃圾收集日志
下图是本篇的写作大纲,将从以下四个方面介绍怎么样处理 JVM 日志. 有准备才能不慌 想要分析日志,首先你得有日志呀,对不对.凡是未雨绸蒙总是没错的.所谓有日志的意思,你要把 JVM 参数配置好,日志 ...