2014-03-04 38 views
10

我正在嘗試在我的logcat中獲取請求/響應的所有標頭。看起來像使用org.apache.http一樣,HttpURLConnection沒有簡單的方法。 據this blog你可以這樣做:Android中的HttpURLConnection線路日誌記錄

sun.net.www.protocol.http.HttpURLConnection.level = ALL 

看來這是從Android的實施HttpURLConnection的去除。 有沒有簡單的方法來嗅探logcat上的請求/響應?

感謝

+0

有人嗎?必須有一個簡單的方法... –

+0

你想達到什麼目的?訪問每個請求的頭文件可以像@Rhand指出的那樣輕鬆完成,但似乎還有更多這樣的內容? – njzk2

回答

-2

這是你可以輕鬆地做自己:我不知道這是可能與Android標準HttpURLConnection的

private static void logConnection(HttpURLConnection httpConnection) throws IOException { 
    int status = httpConnection.getResponseCode(); 
    Log.d("logConnection", "status: " + status); 
    for (Map.Entry<String, List<String>> header : httpConnection.getHeaderFields().entrySet()) { 
     Log.d("logConnection", header.getKey() + "=" + header.getValue()); 
    } 
} 
+0

使用您的代碼,您只會記錄響應代碼和標題。該請求將被消耗並且無法訪問 –

+1

這只是日誌記錄,您可以從處理請求的方法調用此命令。例如打開連接,記錄響應代碼(通過調用logConnection()),處理響應。 – Rhand

0

。因此使用OkHttp庫很容易實現:

HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(); 
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS); 

OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder(); 
httpClientBuilder.addInterceptor(loggingInterceptor); 

OkHttpClient client = httpClientBuilder.build(); 
Request.Builder requestBuilder = new Request.Builder(); 
requestBuilder.url("http://android.com"); 

client.newCall(requestBuilder.build()).execute();