Android 使用OkHttp拦截器进行改造

示例

本示例说明如何在OkHttp中使用请求拦截器。这有很多用例,例如:

  • header为请求添加通用性。例如,验证请求

  • 调试网络应用程序

  • 检索原始 response

  • 记录网络交易等

  • 设置自定义用户代理

Retrofit.Builder builder = new Retrofit.Builder()
        .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
        .addConverterFactory(GsonConverterFactory.create())
        .baseUrl("https://api.github.com/");

if (!TextUtils.isEmpty(githubToken)) {
    // githubToken`:GitHub的访问令牌
    OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new Interceptor() {
        @Override public Response intercept(Chain chain) throws IOException {
            Request request = chain.request();
            Request newReq = request.newBuilder()
                    .addHeader("Authorization", format("token %s", githubToken))
                    .build();
            return chain.proceed(newReq);
        }
    }).build();

    builder.client(client);
}

return builder.build().create(GithubApi.class);

有关更多详细信息,请参见OkHttp主题。