Retrofit 2.0+okhttp 3.0ログブロッカーInterceptorを追加
1565 ワード
retrofitはokhttpに基づいています.retrofit/okhttpを使用すると、これらはwifiに直結し、システムのwifi設定を行わないと、エージェントはパッケージをつかめません.したがって、パッケージをキャプチャしたい場合は、ネットワークカードをキャプチャしたり、リクエストを印刷したり、共通パラメータや署名を追加したりする場合は、ブロッキングを使用して追加することができます.
ブロッカーここではokhttpのアプリケーションブロッカーを使用してget postに統一パラメータと署名をそれぞれ追加し、まずinterceptorが独自のブロッカーを作成することを実現します.
ブロッカーここではokhttpのアプリケーションブロッカーを使用してget postに統一パラメータと署名をそれぞれ追加し、まずinterceptorが独自のブロッカーを作成することを実現します.
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.addNetworkInterceptor(new LoggingInterceptor());
private static class LoggingInterceptor implements Interceptor {
@Override
public Response intercept(Interceptor.Chain chain) throws IOException {
// chain request response,
Request request = chain.request();
long t1 = System.nanoTime();//
DebugLog.i(String.format(Locale.CHINA, " %s on %s%n%s",
request.url(), chain.connection(), request.headers()));
Response response = chain.proceed(request);
long t2 = System.nanoTime();//
ResponseBody responseBody = response.peekBody(1024 * 1024);
// response.body().string()
// response.body().string() ,response , ,
// response
DebugLog.i(String.format(Locale.CHINA, " : [%s] %n json:【%s】 %.1fms%n%s",
response.request().url(),
responseBody.string(),
(t2 - t1) / 1e6d,
response.headers()));
return response;
}
}