使用 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`: Access token for 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 主題