1、简介
- 请求头(Request Headers)是在HTTP协议中,客户端(如浏览器或应用程序)向服务器发送请求时附带的元数据。
- 包含了关于请求的额外信息,有助于客户端与服务器之间的有效通信。
- 请求头中的信息可以让服务器了解客户端的环境、请求偏好或身份验证等,从而生成针对性的响应。
2、请求头主要字段
- host 主机和端口
- connection 通知服务器,本次传输后,是否还会保持连接
- user-agent 当前客户端的软件环境,包括操作系统、浏览器版本等信息
- accept 客户端可接收的信息类型
- accept-encoding 客户端可接受的内容编码
- accept-language 客户端可接受的语言
- cookie 将Cookie的信息通过请求头发送给服务器
- cache-control 缓存如何处理
- Content-Length 数据长度
- Context-type 响应数据类型
3、主要应用场景
- 在实际应用中,请求头常用于内容协商、身份验证和缓存控制等场景。
- 通过Accept字段,客户端可以告诉服务器它支持的内容类型,以便服务器返回最合适的格式。
- 请求头也可以用于传递身份验证信息,如通过Authorization字段进行用户身份验证。
- 客户端和服务器还可以通过Cache-Control等字段来控制资源的缓存行为,以提高网络效率和响应速度。
4、设置一个请求头
创建了一个HttpClient实例,并构建了一个HttpRequest对象。使用HttpHeaders.of方法创建了一个请求头集合,并将其添加到HttpRequest中。然后发送请求并处理响应。
java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpHeaders;
import java.io.IOException;
public class HttpClientExample {
public static void main(String[] args) {
HttpClient client = HttpClient.newHttpClient();
// 创建一个请求头集合
HttpHeaders headers = HttpHeaders.of(
"User-Agent", "MyCustomUserAgent/1.0",
"Authorization", "Bearer my-token",
"Accept", "application/json"
);
// 创建一个HttpRequest
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("http://example.com/api/resource"))
.headers(headers) // 设置请求头
.build();
// 发送请求并获取响应
try {
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
// 处理响应
System.out.println(response.statusCode());
System.out.println(response.body());
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}