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中。然后發送請求并處理響應。
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(); } }
}