Android中的HttpURLConnection电线记录

时间:2014-03-04 13:39:16

标签: java android http

我正在尝试在我的logcat中获取请求/响应的所有标头。似乎HttpURLConnection与org.apache.http一样没有简单的方法。 根据{{​​3}},您可以这样做:

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

似乎这已从HttpURLConnection的Android实现中删除。 有没有什么简单的方法可以在logcat上嗅探请求/响应?

由于

3 个答案:

答案 0 :(得分:0)

我不确定Android上的标准HttpURLConnection是否可行。因此使用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();

答案 1 :(得分:0)

也许这个链接会有所帮助:Run Chromium with flags 尽管如此,您仍然需要执行 logcat 部分。这只会得到 JSON 格式的响应。

答案 2 :(得分:-1)

这是你可以轻松做到的事情:

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());
    }
}