1
インターセプタを追加して、okhttp3とretrofit2を使用してリクエストにヘッダを追加しようとしています。私はヘッダーがリクエストに追加されていないことに気付き、system.out.printlnデバッグ行が呼び出されることはなかった。インターセプタが呼び出されないretrofit2
サービスの作成:いいえアイデアは、なぜが、ここに私のコードません
OkHttpClient client = new OkHttpClient();
client.newBuilder()
.addInterceptor(new ServiceInterceptor(context))
.authenticator(new MyAuthenticator(context))
.build();
service = (new Retrofit.Builder()
.baseUrl(BASE_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build())
.create(Service.class);
ServiceInterceptor:
public class ServiceInterceptor implements Interceptor {
private final Context context;
public ServiceInterceptor(Context context){
this.context = context;
}
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
System.out.println("Interceptor");
if(request.header("No-Authentication") == null){
request = request.newBuilder()
.addHeader("User-Agent", "APP NAME")
.addHeader("Authorization", "bearer " + PreferenceManager.getDefaultSharedPreferences(context).getString("access_token", ""))
.build();
}
return chain.proceed(request);
}
}
問題のない正確一部が、私のオーセンティケータが呼び出されないさんのいずれか...。
public class MyAuthenticator implements Authenticator {
private Context context;
public MyAuthenticator(Context context){
this.context = context;
}
@Override
public Request authenticate(Route route, Response response) throws IOException {
//blah blah refresh token here...
return null;
}
}
私は同じ問題がありました。私は新しい変数に割り当てませんでしたので、すべての設定が失われました。しかし、今私はそれを動作する変数に割り当てました。 – toobsco42