首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 獲取 HTTP 請求頭的完整實現方案

     編輯:程式設計綜合問答

問題描述

在 Android 開發中,需要通過代碼獲取 HTTP 請求頭信息,常用於免流量應用開發、網絡調試或安全驗證場景。

核心方案:使用 HttpClient 工具類

Apache HttpClient 提供了完整的請求/響應頭管理 API。雖然 Android 6.0 移除了內置 HttpClient,但可通過 useLibrary 'org.apache.http.legacy' 或引入第三方庫(如 OkHttp)實現。

基於 HttpClient 的實現步驟

  1. 構建 HttpGet 或 HttpPost 請求對象。
  2. 執行請求獲取 HttpResponse。
  3. 調用 getAllHeaders() 或 getFirstHeader(String name) 獲取響應頭。
  4. 若需獲取請求頭,可在發送前通過 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

推薦使用 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 獲取請求/響應頭完整教程

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved