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
类?
答案 0 :(得分:1)
好像是okhttp3.Request
。
您可以通过查看在何处使用它,然后检查该调用者的API来找到它。在这种情况下,它用在httpClient.addInterceptor()
方法中,并且您在发布的代码段中可以看到httpClient
是OkHttpClient.Builder
类的。
快速搜索显示OkHttpClient.Builder来自okhttp3
程序包okhttp3.OkHttpClient.Builder
,该程序包定义了您要查找的Request
类。
这也与您发布的链接的“概述”部分一致,其中提到了“ Square”和“ Okhttp”:
Retrofit是适用于Android和Java的类型安全的HTTP客户端-由Square(Dagger,Okhttp)开发。