Request类在哪里定义?

时间:2019-03-05 20:56:25

标签: java retrofit2

Baeldung有一个不错的intro to Retrofit。我正在尝试使用GitHubServiceGenerator扩展版的一些想法(在“ 7. Logging”标题下):

public class GitHubServiceGenerator {

    private static final String BASE_URL = "https://api.github.com/";

    private static Retrofit.Builder builder
      = new Retrofit.Builder()
        .baseUrl(BASE_URL)
        .addConverterFactory(GsonConverterFactory.create());

    private static Retrofit retrofit = builder.build();

    private static OkHttpClient.Builder httpClient
      = new OkHttpClient.Builder();

    private static HttpLoggingInterceptor logging
      = new HttpLoggingInterceptor()
        .setLevel(HttpLoggingInterceptor.Level.BASIC);

    public static <S> S createService(Class<S> serviceClass) {
        if (!httpClient.interceptors().contains(logging)) {
            httpClient.addInterceptor(logging);
            builder.client(httpClient.build());
            retrofit = builder.build();
        }
        return retrofit.create(serviceClass);
    }

    public static <S> S createService(Class<S> serviceClass, final String token) {
        if (token != null) {
            httpClient.interceptors().clear();
            httpClient.addInterceptor( chain -> {
                Request original = chain.request();
                Request.Builder builder1 = original.newBuilder()
                  .header("Authorization", token);
                Request request = builder1.build();
                return chain.proceed(request);
            });
            builder.client(httpClient.build());
            retrofit = builder.build();
        }
        return retrofit.create(serviceClass);
    }
}

在代码中,这些行出现:

Request original = chain.request();
Request.Builder builder1 = original.newBuilder()
  .header("Authorization", token);
Request request = builder1.build();

我遇到编译错误:

cannot find symbol
  symbol:   class Request

在哪里可以找到Request类?

1 个答案:

答案 0 :(得分:1)

好像是okhttp3.Request

您可以通过查看在何处使用它,然后检查该调用者的API来找到它。在这种情况下,它用在httpClient.addInterceptor()方法中,并且您在发布的代码段中可以看到httpClientOkHttpClient.Builder类的。

快速搜索显示OkHttpClient.Builder来自okhttp3程序包okhttp3.OkHttpClient.Builder,该程序包定义了您要查找的Request类。

这也与您发布的链接的“概述”部分一致,其中提到了“ Square”和“ Okhttp”:

  

Retrofit是适用于Android和Java的类型安全的HTTP客户端-由Square(Dagger,Okhttp)开发。