通过自定义OkHttp的 Interceptor 来实现
Interceptor可以在OkHttp的请求和响应中添加、修改和删除headers,以及做其他的一些操作
public class LoggingInterceptor implements Interceptor {
@Override public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
// 在请求头中添加log信息
request = request.newBuilder()
.header("log-info", "your log message here")
.build();
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;
}
}
在上面的例子中,我们创建了一个LoggingInterceptor类来拦截OkHttp的请求和响应,并在请求头中添加了一个名为"log-info"的header。你可以替换这个header的名字和值,来自定义你的log信息。
接下来,你可以将LoggingInterceptor添加到OkHttpClient中:
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new LoggingInterceptor())
.build();