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: 服务器作为网关或代理时请求超时。
代码案例
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;
}
}