Java Android中的HttpUrl连接线日志记录

Java Android中的HttpUrl连接线日志记录,java,android,http,Java,Android,Http,我试图在我的logcat中获取请求/响应的所有标题。似乎使用HttpURLConnection并不像使用org.apache.http那样简单。 根据您所能做的: sun.net.www.protocol.http.HttpURLConnection.level = ALL 这似乎是从HttpURLConnection的Android实现中删除的。 是否有任何简单的方法可以嗅探logcat上的请求/响应 谢谢这是你自己可以轻松做到的: private static void logConnec

我试图在我的logcat中获取请求/响应的所有标题。似乎使用HttpURLConnection并不像使用org.apache.http那样简单。 根据您所能做的:

sun.net.www.protocol.http.HttpURLConnection.level = ALL
这似乎是从HttpURLConnection的Android实现中删除的。 是否有任何简单的方法可以嗅探logcat上的请求/响应


谢谢

这是你自己可以轻松做到的:

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());
    }
}
private static void logConnection(HttpURLConnection-httpConnection)引发IOException{
int status=httpConnection.getResponseCode();
日志d(“日志连接”,“状态:+状态”);
for(Map.Entry头:httpConnection.getHeaderFields().entrySet()){
Log.d(“logConnection”,header.getKey()+”=“+header.getValue());
}
}

我不确定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();

任何人一定有一个简单的方法…你想实现什么?正如@Rhand所指出的,访问每个请求的头很容易,但似乎还有更多的工作要做?使用您的代码,您将只记录响应代码和头。请求将被使用,不再可访问。这只是日志记录,您可以从处理请求的方法调用它。e、 g打开连接,记录响应代码(通过调用logConnection()),处理响应。