26

HTTP リクエストと JSON 解析を行うために Retrofit を使用しましたが、デバッグ ログをオンにする方法が気に入りました。ログを使用すると、ボディ リクエストや URL を確認できます。これは非常に便利です。Retrofit は OkHttp を使用しているため、OkHttp にも各リクエストのログを有効にする方法があるかどうか疑問に思っています。

4

9 に答える 9

34

を使用してInterceptor、次のクラスを定義できます。

class LoggingInterceptor implements Interceptor {
  @Override public Response intercept(Chain chain) throws IOException {
    Request request = chain.request();

    long t1 = System.nanoTime();
    Log.d("OkHttp", String.format("Sending request %s on %s%n%s",
        request.url(), chain.connection(), request.headers()));

    Response response = chain.proceed(request);

    long t2 = System.nanoTime();
    Log.d("OkHttp", String.format("Received response for %s in %.1fms%n%s",
        response.request().url(), (t2 - t1) / 1e6d, response.headers()));

    return response;
  }
}

そしてそれを追加します:

OkHttpClient client = new OkHttpClient.Builder()
  .addInterceptor(new LoggingInterceptor())
  .build();
于 2015-06-03T16:20:18.813 に答える
17

インターセプター機能は現在レビュー中ですが、プル リクエストのコード変更を適用することで、この機能を使用して独自のバージョンの okHttp を構築できます。

このようなもので必要な機能を実装できます

// Create an interceptor which catches requests and logs the info you want
RequestInterceptor logRequests= new RequestInterceptor() {
  public Request execute(Request request) {
    Log.i("REQUEST INFO", request.toString());
    return request; // return the request unaltered
  }
};

OkHttpClient client = new OkHttpClient();
List<RequestInterceptor> requestInterceptors = client.requestInterceptors();
requestInterceptros.add(logRequests);

もっと見たい場合は、プルリクエストにテストが含まれています。

これを使用する前に、事前に警告する必要があります。インターセプター API はまだマージされていないため、変更される可能性があります。製品コードでは使用しないでください。ただし、個人的なテストには十分無害です。

于 2014-08-23T08:35:56.917 に答える
7

まだありません。しかし、それを簡単にする開発中のインターセプター機能があります。

于 2014-07-25T12:19:01.983 に答える