在 Android 開發中,需要通過代碼獲取 HTTP 請求頭信息,常用於免流量應用開發、網絡調試或安全驗證場景。
Apache HttpClient 提供了完整的請求/響應頭管理 API。雖然 Android 6.0 移除了內置 HttpClient,但可通過 useLibrary 'org.apache.http.legacy' 或引入第三方庫(如 OkHttp)實現。
HttpGet 或 HttpPost 請求對象。HttpResponse。getAllHeaders() 或 getFirstHeader(String name) 獲取響應頭。request.getAllHeaders() 讀取。// 獲取響應頭
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("https://example.com");
HttpResponse response = client.execute(request);
Header[] headers = response.getAllHeaders();
for (Header header : headers) {
Log.d("HTTP_HEADER", header.getName() + ": " + header.getValue());
}
// 設置並獲取請求頭
request.setHeader("User-Agent", "CustomAgent");
Header[] requestHeaders = request.getAllHeaders();
推薦使用 OkHttp,API 更簡潔,支持 HTTP/2、連接池等特性:
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://example.com")
.addHeader("Custom-Header", "Value")
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
Headers headers = response.headers();
for (int i = 0; i < headers.size(); i++) {
Log.d("OKHTTP_HEADER", headers.name(i) + ": " + headers.value(i));
}
}
// ...
});
詳細實現可參考:HttpClient 獲取請求/響應頭完整教程