2016-11-24 8 views
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; 
    } 
} 

答えて

3

clientをデフォルトのに設定した場合0。クライアントからnewBuilder()を使用して新しいクライアントを作成しますが、何も割り当てません。最初のクライアントを使用していない場合は、最初にビルダーを割り当てるだけです -

OkHttpClient client = new OkHttpClient.Builder() 
      .addInterceptor(new ServiceInterceptor(context)) 
      .authenticator(new MyAuthenticator(context)) 
      .build(); 
+0

私は同じ問題がありました。私は新しい変数に割り当てませんでしたので、すべての設定が失われました。しかし、今私はそれを動作する変数に割り当てました。 – toobsco42

関連する問題