C# HTTP系列5 HttpWebResponse.StatusCode属性

HttpWebResponse.StatusCode 属性获取响应的状态。对应 HttpStatusCode 枚举值之一。

HttpStatusCode 枚举

Accepted

202

等效于 HTTP 状态 202。 Accepted 指示已接受请求做进一步处理。

Ambiguous

300

等效于 HTTP 状态 300。 Ambiguous 指示请求的信息有多种表示形式。 默认操作是将此状态视为重定向,并遵循与此响应关联的 Location 标头的内容。不明确是的同义词MultipleChoices。

BadGateway

502

等效于 HTTP 状态 502。 BadGateway 指示中间代理服务器从另一代理或原始服务器接收到错误响应。

BadRequest

400

等效于 HTTP 状态 400。 BadRequest 指示服务器未能识别请求。 如果没有其他适用的错误, 或者不知道准确的错误或错误没有自己的错误代码,则发送 BadRequest。

Conflict

409

等效于 HTTP 状态 409。 Conflict 指示由于服务器上的冲突而未能执行请求。

Continue

100

等效于 HTTP 状态 100。 Continue 指示客户端可能继续其请求。

Created

201

等效于 HTTP 状态 201。 Created 指示请求导致在响应被发送前创建新资源。

ExpectationFailed

417

等效于 HTTP 状态 417。 ExpectationFailed 指示服务器未能符合 Expect 标头中给定的预期值。

Forbidden

403

等效于 HTTP 状态 403。 Forbidden 指示服务器拒绝满足请求。

Found

302

等效于 HTTP 状态 302。 Found 指示请求的信息位于 Location 标头中指定的 URI 处。 接收到此状态时的默认操作为遵循与响应关联的 Location 标头。 原始请求方法为 POST 时, 重定向的请求将使用 GET 方法。 找到是的同义词重定向。

GatewayTimeout

504

等效于 HTTP 状态 504。 GatewayTimeout 指示中间代理服务器在等待来自另一个代理或原始服务器的响应时已超时。

Gone

410

等效于 HTTP 状态 410。 Gone 指示请求的资源不再可用。

HttpVersionNotSupported

505

等效于 HTTP 状态 505。 HttpVersionNotSupported指示服务器不支持请求的 HTTP 版本。

InternalServerError

500

等效于 HTTP 状态 500。 InternalServerError 指示服务器上发生了一般错误。

LengthRequired

411

等效于 HTTP 状态 411。 LengthRequired 指示缺少必需的 Content-length 标头。

MethodNotAllowed

405

等效于 HTTP 状态 405。 MethodNotAllowed 指示请求的资源上不允许请求方法(POST 或 GET)。

Moved

301

等效于 HTTP 状态 301。 Moved 指示请求的信息已移到 Location 头中指定的 URI 处。 接收到此状态时的默认操作为遵循与响应关联的 Location 标头。 原始请求方法为 POST 时, 重定向的请求将使用 GET 方法。 移动是的同义词MovedPermanently。

MovedPermanently

301

等效于 HTTP 状态 301。 MovedPermanently 指示请求的信息已移到 Location 头中指定的 URI 处。 接收到此状态时的默认操作为遵循与响应关联的 Location 标头。 MovedPermanently是的同义词Moved。

MultipleChoices

300

等效于 HTTP 状态 300。 MultipleChoices 指示请求的信息有多种表示形式。 默认操作是将此状态视为重定向, 并遵循与此响应关联的 Location 标头的内容。 MultipleChoices是的同义词不明确。

NoContent

204

等效于 HTTP 状态 204。 NoContent 指示已成功处理请求并且响应已被设定为无内容。

NonAuthoritativeInformation

203

等效于 HTTP 状态 203。NonAuthoritativeInformation 指示返回的元信息来自缓存副本而不是原始服务器, 因此可能不正确。

NotAcceptable

406

等效于 HTTP 状态 406。 NotAcceptable 指示客户端已用 Accept 标头指示将不接受资源的任何可用表示形式。

NotFound

404

等效于 HTTP 状态 404。 NotFound 指示请求的资源不在服务器上。

NotImplemented

501

等效于 HTTP 状态 501。 NotImplemented 指示服务器不支持请求的函数。

NotModified

304

等效于 HTTP 状态 304。 NotModified 指示客户端的缓存副本是最新的。 未传输此资源的内容。

OK

200

等效于 HTTP 状态 200。 OK 指示请求成功,且请求的信息包含在响应中。 这是最常接收的状态代码。

PartialContent

206

等效于 HTTP 状态 206。 PartialContent 指示响应是包括字节范围的 GET 请求所请求的部分响应。

PaymentRequired

402

等效于 HTTP 状态 402。 保留 PaymentRequired 以供将来使用。

PreconditionFailed

412

等效于 HTTP 状态 412。 PreconditionFailed 指示一个条件设置为此请求失败,并且无法执行请求。 使用条件请求标头,如: If-match、 设置条件 If-None-匹配项,或如果-以未修改形式-自。

ProxyAuthenticationRequired

407

等效于 HTTP 状态 407。ProxyAuthenticationRequired 指示请求的代理要求身份验证。 Proxy-authenticate 标头包含如何执行身份验证的详细信息。

Redirect

302

等效于 HTTP 状态 302。 Redirect 指示请求的信息位于 Location 标头中指定的 URI 处。 接收到此状态时的默认操作为遵循与响应关联的 Location 标头。原始请求方法为 POST 时,重定向的请求将使用 GET 方法。 重定向是的同义词找到。

RedirectKeepVerb

307

等效于 HTTP 状态 307。 RedirectKeepVerb 指示请求信息位于 Location 标头中指定的 URI 处。 接收到此状态时的默认操作为遵循与响应关联的 Location 标头。 原始请求方法为 POST 时,重定向的请求还将使用 POST 方法。 RedirectKeepVerb是的同义词TemporaryRedirect。

RedirectMethod

303

等效于 HTTP 状态 303。 作为 POST 的结果,RedirectMethod 将客户端自动重定向到 Location 标头中指定的 URI。 用 GET 生成对 Location 标头所指定的资源的请求。 RedirectMethod是的同义词SeeOther。

RequestedRangeNotSatisfiable

416

等效于 HTTP 状态 416。RequestedRangeNotSatisfiable 指示无法返回从资源请求的数据范围,因为范围的开头在资源的开头之前, 或因为范围的结尾在资源的结尾之后。

RequestEntityTooLarge

413

等效于 HTTP 状态 413。 RequestEntityTooLarge 指示请求太大,服务器无法处理。

RequestTimeout

408

等效于 HTTP 状态 408。 RequestTimeout 指示客户端没有在服务器期望请求的时间内发送请求。

RequestUriTooLong

414

等效于 HTTP 状态 414。 RequestUriTooLong 指示 URI 太长。

ResetContent

205

等效于 HTTP 状态 205。 ResetContent 指示客户端应重置(而非重新加载)当前资源。

SeeOther

303

等效于 HTTP 状态 303。 作为 POST 的结果,SeeOther 将客户端自动重定向到 Location 标头中指定的 URI。 用 GET 生成对 Location 标头所指定的资源的请求。 SeeOther是的同义词RedirectMethod

ServiceUnavailable

503

等效于 HTTP 状态 503。 ServiceUnavailable 指示服务器暂时不可用,通常是由于过多加载或维护。

SwitchingProtocols

101

等效于 HTTP 状态 101。 SwitchingProtocols 指示正在更改协议版本或协议。

TemporaryRedirect

307

等效于 HTTP 状态 307。 TemporaryRedirect 指示请求信息位于 Location 标头中指定的 URI 处。 接收到此状态时的默认操作为遵循与响应关联的 Location 标头。 原始请求方法为 POST 时,重定向的请求还将使用 POST 方法。 TemporaryRedirect是的同义词RedirectKeepVerb。

Unauthorized

401

等效于 HTTP 状态 401。 Unauthorized 指示请求的资源要求身份验证。 WWW-Authenticate 标头包含如何执行身份验证的详细信息。

UnsupportedMediaType

415

等效于 HTTP 状态 415。 UnsupportedMediaType指示请求是不受支持的类型。

Unused

306

等效于 HTTP 状态 306。 Unused 是未完全指定的 HTTP/1.1 规范的建议扩展。

UpgradeRequired

426

等效于 HTTP 状态 426。 UpgradeRequired 指示客户端应切换为诸如 TLS/1.0 之类的其他协议。

UseProxy

305

等效于 HTTP 状态 305。 UseProxy 指示请求应使用位于 Location 标头中指定的 URI 的代理服务器。

示例

下面的示例将返回的状态进行比较HttpWebResponse的成员HttpStatusCode类来确定响应的状态。

 1 HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create("http://www.contoso.com");
 2 httpReq.AllowAutoRedirect = false;
 3 
 4 HttpWebResponse httpRes = (HttpWebResponse)httpReq.GetResponse();
 5 
 6 if (httpRes.StatusCode==HttpStatusCode.Moved) 
 7 {
 8     // ToDo 
 9 }
10 
11 // 关闭响应
12 httpRes.Close();

注解

HttpStatusCode 枚举包含的状态代码为 HTTP 1.1 RFC 2616 中定义的值。包含的 HTTP 请求的状态 HttpWebResponse.StatusCode 属性。

如果HttpWebRequest.AllowAutoRedirect属性是false,下面的枚举值会导致引发异常:

  • Ambiguous
  • Found
  • MultipleChoices
  • Redirect
  • RedirectKeepVerb
  • RedirectMethod
  • SeeOther
  • TemporaryRedirect

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏浪子编程走四方

推荐几个常见的网络抓包工具

最近在开发一款小程序,老是有人说有一个小功能的数据不正确,但是自己测试几个账号都是正确的,无法判断是前端的问题还是后端的问题,为了像开发web应用一样调试,便找...

89420
来自专栏公众号文章

如何快速创建定时任务【Quartz.NET总结系列一】

前段时间,花了大量的时间,将原先的计划任务,切换到Quartz.NET来进行管理。原先的后台定时服务都是通过计划任务来实现的,但是随着业务增长,计划任务也越来越...

11220
来自专栏Python绿色通道

爬虫工程师必玩的三个闯关网站

为了让萌新选手有题可练,咸鱼搜罗了三个可以 py 的爬虫闯关网站,希望各位适龄萌新按需 py。

23120
来自专栏前端自习课

【Web技术】337- 秒懂 Web 缓存

最近把前端缓存重新整理了一下,从整体的层面上把前端所有能用的缓存方案梳理了一遍。同时,对于http缓存,使用了表格的方案,使得原先晦涩难记的特性变得清晰明了。特...

8120
来自专栏测试工程师成长之道

实用的Mac命令行工具

iTerm2 - 免费的终端工具,直接替代自带的 Terminal,有非常多惊人的特性。

36220
来自专栏程序员学习大本营

tomcat学习 | DefaultServlet | tomcat做文件服务器

小刀这几天在追斗罗大陆,看到唐门,也突然有一种想组建类似的想法,我们有内门,有外门,有长老等等,让学习变成游戏,有想法的,或者想和小刀聊一聊的,加小刀微信吧: ...

13810
来自专栏V社 北京社

这可能是史上最易懂的 Spring Boot 入门教程

Spring Boot 是基于 Spring 框架基础上推出的一个全新的框架, 旨在让开发者可以轻松地创建一个可独立运行的,生产级别的应用程序。

28530
来自专栏前端达人

「中高级前端进阶」从零开始手写一个 vue-cli 脚手架

关注我的小伙伴应该知道,我之前写过一篇脚手架相关的文章,在掘金收获了近一千个赞,被前端大全和奇舞周刊公众号转载。

23410
来自专栏python学习教程

学会Python都可以在哪些方面就业?

随着Python的火热,越来越多的人开始学习了这门编程语言,有些人是看重了Python的发展,有些人是盲目跟风,学习到最后都不知道自己是否真正喜欢,学习完Pyt...

8720
来自专栏FreeBuf

勒索病毒防范措施与应急响应指南

此前我写过一篇文章《企业中了勒索病毒该怎么办?可以解密吗?》,里面介绍了很多解密的网站,并教了大家如何快速识别企业中了哪个勒索病毒家族,以及此勒索病毒是否有解密...

13110

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励