【发布时间】:2021-01-27 02:01:36
【问题描述】:
我正在使用带有 okhttp3 的改造 2。在这里我设置了我的令牌,但它仍然显示未经授权的错误。它没有进入下面代码的 try-catch 中。(即令牌没有被打印)
我的方法是使用单个文件进行改造服务,它将用于所有其他调用。
这是我的代码
public static Retrofit getClient() {
Gson gson = new GsonBuilder()
.setLenient()
.create();
OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
clientBuilder.addInterceptor(loggingInterceptor);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(ApiConstant.SERVER_API)
.client(createOkHttpClient())
.client(clientBuilder.build())
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
return retrofit;
}
private static OkHttpClient createOkHttpClient() {
final OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
if (isTokenRequired()) {
if (!TextUtils.isEmpty(Profile.getToken())) {
String token = Profile.getToken();
httpClient.addInterceptor(
new Interceptor() {
@Override
public Response intercept(Interceptor.Chain chain) throws IOException {
Request newRequest = null;
try {
System.out.println("token ==" + token);
newRequest = chain.request().newBuilder()
.header("Authorization", "Token " + token)
.build();
System.out.println("newRequest ===" + newRequest);
} catch (Exception e) {
e.printStackTrace();
}
return chain.proceed(newRequest);
}
});
} else {
throw new IllegalStateException("No Token");
}
}
return httpClient.build();
}
【问题讨论】:
标签: java android android-studio retrofit2 rx-java2