Регистрация проводки HttpURLConnection в Android

Я пытаюсь получить все заголовки для запроса/ответа в моем logcat. Кажется, нет простого способа с HttpURLConnection, как и с org.apache.http. Согласно этот блог вы можете сделать:

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

Кажется, это было удалено из реализации Android для HttpURLConnection. Есть ли простой способ обнюхать запросы/ответы на logcat?

Спасибо

Ответ 1

Я не уверен, что это возможно со стандартным HttpURLConnection на Android. Поэтому легко использовать библиотеку 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();

Ответ 2

Это то, что вы можете легко сделать сами:

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