HTTP状态码、接口请求状态码

HTTP状态码是由三位数字组成的数字代码,用于表示HTTP协议处理请求时的返回状态。状态码通常由服务端发送,客户端通过接收状态码来了解请求是否成功,以及出现错误时出错的原因。

以下是HTTP状态码的详细介绍: 

1xx - 信息性状态码

这些状态码表示已接受请求,但仍处于处理过程中。常见的信息性状态码有以下几种:

  • 100 Continue(继续):表示客户端应该继续它的请求
  • 101 Switching Protocols(切换协议):表示客户端需要采用不同协议以完成请求,如升级为WebSocket
  • 102 Processing(处理):表示服务器已经收到并正在处理请求,但客户端仍应继续等待

2xx - 成功状态码

这些状态码表示已成功接收请求并进行了处理。常见的成功状态码有以下几种:

  • 200 OK(成功):表示已成功处理请求,一般用于GET和POST请求
  • 201 Created(已创建):表示已成功创建请求的资源
  • 202 Accepted(已接受):表示已接收请求,但尚未完成处理,需要等待一段时间
  • 204 No Content(无内容):表示成功处理请求,但没有返回任何实体内容

3xx - 重定向状态码

这些状态码表示客户端需要可能的进一步操作才能完成请求,如需要进一步地加载新URL。常见的重定向状态码有以下几种:

  • 300 Multiple Choices(多项选择):表示请求的资源有多个可供选择的表示形式,由客户端进行选择
  • 301 Moved Permanently(永久重定向):表示资源已被永久移除,并且将SE0优化转移到了新的位置
  • 302 Found(临时重定向):表示资源已被临时移动到另一个位置和URL
  • 303 See Other(查看其他位置):表示客户端应当使用另一个URI来访问请求的资源,而不是使用当前URI
  • 304 Not Modified(未修改):表示客户端缓存的资源未发生修改,可以继续使用缓存
  • 307 Temporary Redirect(临时重定向):与302状态码类似,客户端应该继续使用原地址
  • 308 Permanent Redirect(永久重定向):与301状态码类似,客户端应该使用新的URL来访问请求资源

4xx - 客户端错误状态码

这些状态码表示客户端的请求有错误,需修改请求才能成功。常见的客户端错误状态码有以下几种:

  • 400 Bad Request(请求出错):表示请求报文存在语法错误或请求不被服务器所接受
  • 401 Unauthorized(未授权):表示请求未经授权,需进行身份验证
  • 403 Forbidden(拒绝访问):表示服务器拒绝该请求
  • 404 Not Found(未找到):表示请求的资源不存在
  • 405 Method Not Allowed(方法不被允许):表示请求中所指定的方法不被服务器支持
  • 406 Not Acceptable(不可接受):表示客户端请求的内容格式服务器不支持
  • 407 Proxy Authentication Required(需要代理身份验证):表示客户端需要先使用代理服务器进行身份验证才能访问所需资源
  • 408 Request Timeout(请求超时):表示请求超时,服务器等待的时间过长
  • 409 Conflict(请求冲突):表示请求冲突,且仅适用于PUT请求
  • 410 Gone(已被删除):表示请求的资源已被永久删除
  • 411 Length Required(需要长度):表示服务端必须提供 Content-Length 头信息
  • 412 Precondition Failed(前置条件不满足):表示客户端请求的条件无法服务端满足
  • 413 Payload Too Large(请求体太大):表示服务器拒绝处理请求,请求过于庞大
  • 414 URI Too Long(URI太长):表示请求中的URI过长,服务器无法处理
  • 415 Unsupported Media Type(不支持的媒体类型):表示客户端请求的内容格式不被服务器支持
  • 416 Range Not Satisfiable(范围无效):表示服务器无法提供请求的范围,如请求的资源不存在
  • 417 Expectation Failed(服务器无法处理Expect头字段指定的期望值):表示服务器无法满足客户端在Expect头字段中指定的扩展请求信息
  • 421 Misdirected Request(该对端服务器错):表示服务器要求客户端通过另一个协议或IP地址访问资源,以便更好的控制负载平衡。
  • 422 Unprocessable Entity(请求格式正确,但语义有误):表示请求格式正确,但是由于含有语义错误,无法被服务器识别
  • 423 Locked(当前请求的资源被锁定):表示由于资源被锁定,请求无法处理
  • 424 Failed Dependency(请求失败依赖):表示一个先前的请求失败,导致此次请求失败
  • 425 Too Early(请求过早):表示请求过早,任何操作都不能执行
  • 426 Upgrade Required(需要升级协议):表示客户端需要切换协议以完成请求
  • 428 Precondition Required(此时请求需满足先决条件):表示缺少先决条件,请求无法被处理
  • 429 Too Many Requests(请求过多):表示请求次数超出了服务器的限制
  • 431 Request Header Fields Too Large(请求头超大):表示请求头部字段或cookie长度过大,服务器无法处理
  • 451 Unavailable For Legal Reasons(由于法律原因无法获得):表示服务器由于法律原因无法处理请求

5xx - 服务器端错误状态码

这些状态码表示服务器在处理请求时遇到错误或无法完成请求。常见的服务器端错误状态码有以下几种:

  • 500 Internal Server Error(内部服务器错误):表示服务器在处理请求时遇到错误
  • 501 Not Implemented(未实现):表示服务器不支持请求的功能
  • 502 Bad Gateway(错误网关):表示网关或代理服务器收到无效响应
  • 503 Service Unavailable(服务不可用):表示服务器暂时无法处理请求,如服务器过载、停机等
  • 504 Gateway Timeout(网关超时):表示网关或代理服务器在规定时间内未能接收到响应
  • 505 HTTP Version Not Supported(HTTP协议版本不被支持):表示服务器不支持请求中所用的HTTP协议版本
  • 506 Variant Also Negotiates(协商变量也行):表示服务器在内部配置错误
  • 507 Insufficient Storage(存储空间溢出):表示服务器无法存储完成请求所必须的内容
  • 508 Loop Detected(检测到循环):表示服务器在处理请求时检测到循环
  • 510 Not Extended(不可扩展):表示客户端需要进行额外的扩展以完成请求
  • 511 Network Authentication Required(需要网络认证):表示客户端需要进行网络认证以完成请求

获取状态码示例

在Java中,使用HttpURLConnection或OkHttp等库发送Http请求,可以通过getResponseCode()方法来获取状态码。下面是一个示例代码:

URL url = new URL("http://www.example.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
int statusCode = connection.getResponseCode();

以上代码是使用HttpURLConnection发送Get请求,并获取响应的状态码。

小结

以上就是HTTP协议中定义的所有状态码及其含义。了解这些状态码,可以更好地判断请求返回结果是否符合预期,有助于开发人员进行debug和问题排查。当HTTP协议定义的状态码不足以表达具体的问题时,HTTP会在响应消息体中进一步描述具体问题信息。无论是服务器端还是客户端,都可以通过状态码及其描述信息来判断问题所在,以便及时得到解决。

你可能感兴趣的:(JAVA,http,网络,java)