常见的 HTTP 状态码分类及说明

HTTP 响应状态码(HTTP status code),表示服务器对请求的处理结果。常见的 HTTP 状态码有以下几类:

1xx: 信息响应 (Informational Responses)

  • 100 Continue: 请求已收到,客户端应继续发送请求的其余部分。
  • 101 Switching Protocols: 服务器同意客户端切换到新的协议。

2xx: 成功 (Successful Responses)

  • 200 OK: 请求成功,服务器返回所请求的数据。
  • 201 Created: 请求成功并创建了新的资源。
  • 202 Accepted: 请求已接受但尚未处理完成。
  • 204 No Content: 请求成功但没有返回内容。

3xx: 重定向 (Redirection Messages)

  • 301 Moved Permanently: 请求的资源已被永久移动到新位置。
  • 302 Found: 请求的资源临时移动到新位置。
  • 304 Not Modified: 请求的资源未被修改,可以使用缓存的版本。

4xx: 客户端错误 (Client Error Responses)

  • 400 Bad Request: 请求有误,服务器无法理解。
  • 401 Unauthorized: 请求需要身份验证。
  • 403 Forbidden: 服务器拒绝请求。
  • 404 Not Found: 请求的资源未找到。
  • 405 Method Not Allowed: 请求的方法不允许。
  • 408 Request Timeout: 请求超时。

5xx: 服务器错误 (Server Error Responses)

  • 500 Internal Server Error: 服务器内部错误。
  • 501 Not Implemented: 服务器不支持请求的方法。
  • 502 Bad Gateway: 服务器作为网关或代理时收到无效响应。
  • 503 Service Unavailable: 服务器当前无法处理请求。
  • 504 Gateway Timeout: 服务器作为网关或代理时请求超时。

代码案例

java 复制代码
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;

public class HttpPostRequest {
    public String HttpPost(String url, JSONObject json) {
        GrgLoggerRepository.getMonitorCOMM().LogInfo("HTTP请求处理 start");
        String responseString = "9999";
        HttpClient httpClient = new HttpClient();
        PostMethod method = new PostMethod(url);

        try {
            httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(20000);
            httpClient.getHttpConnectionManager().getParams().setSoTimeout(20000);

            method.setRequestHeader("Content-type", "application/json; charset=utf-8");
            method.setRequestBody(json.toJSONString());

            int statusCode = httpClient.executeMethod(method);
            GrgLoggerRepository.getMonitorCOMM().LogInfo("HTTP请求返回状态码: " + statusCode);

            switch (statusCode) {
                case 200:
                    responseString = method.getResponseBodyAsString();
                    break;
                case 201:
                    responseString = "资源已创建";
                    break;
                case 204:
                    responseString = "请求成功但无内容";
                    break;
                case 400:
                    responseString = "请求错误";
                    break;
                case 401:
                    responseString = "未授权";
                    break;
                case 403:
                    responseString = "禁止访问";
                    break;
                case 404:
                    responseString = "未找到资源";
                    break;
                case 500:
                    responseString = "服务器内部错误";
                    break;
                case 503:
                    responseString = "服务不可用";
                    break;
                default:
                    responseString = "未知状态码: " + statusCode;
            }
        } catch (Exception e) {
            GrgLoggerRepository.getMonitorCOMM().LogError("HTTP请求处理异常:", e);
        } finally {
            method.releaseConnection();
        }
        GrgLoggerRepository.getMonitorCOMM().LogInfo("HTTP请求处理 end");
        return responseString;
    }
}
相关推荐
asdfg12589633 小时前
如何判断一个地址是否可以用作主机 IP 地址?
服务器·网络·tcp/ip
爱吃甜品的糯米团子4 小时前
Linux 学习笔记之进程管理、网络基础与常用软件安装
linux·网络·学习
迷枫7125 小时前
19.1 TCP 和 UDP 有什么区别?
网络·tcp/ip·udp
取酒鱼食--【余九】5 小时前
深度学习经典网络解析:ResNet
网络·人工智能·深度学习·神经网络·resnet·卷积神经网络·残差神经网络
风清再凯6 小时前
05-k8s网络
网络·容器·kubernetes
LJ-SEU6 小时前
win-ubuntu网络转发
linux·网络·ubuntu
关关长语7 小时前
(一) Dotnet使用MCP的Csharp SDK
网络·.net·mcp
迎風吹頭髮7 小时前
Linux服务器编程实践26-TCP连接超时重连机制:超时时间计算与重连策略
服务器·网络·php
wanhengidc8 小时前
什么是站群服务器
运维·服务器·网络·游戏·智能手机
deng-c-f8 小时前
Linux C/C++ 学习日记(24):UDP协议的介绍:广播、多播的实现
linux·网络·学习·udp