2015-01-10 11 views
9

私はこれらの最新バージョンが互換性があると考えました。このツイートがあります。 https://twitter.com/JakeWharton/status/553066921675857922とRetrofit 1.9の変更履歴にも記載されています。Okhttp 2.2とインターセプタを追加した1.9

 OkHttpClient httpClient = new OkHttpClient(); 
     httpClient.interceptors().add(new TokenExpiredInterceptor()); 

     mRestAdapter = new RestAdapter.Builder() 
       .setEndpoint(API_ENDPOINT) 
       .setClient(httpClient) 
       .setLogLevel(BuildConfig.DEBUG ? 
         RestAdapter.LogLevel.FULL : 
         RestAdapter.LogLevel.NONE) 
       .setRequestInterceptor(new AuthorizationInterceptor()) 
       .build(); 

それはまだ動作しません:

は、しかし、私はこれをしようとします。 setClientメソッドは、互換性のないClientオブジェクトについて文句を言います。

Error:(29, 21) error: no suitable method found for setClient(OkHttpClient) 
method Builder.setClient(Client) is not applicable 
(argument mismatch; OkHttpClient cannot be converted to Client) 
method Builder.setClient(Provider) is not applicable 
(argument mismatch; OkHttpClient cannot be converted to Provider) 

私は何が欠けていますか?また、OkHttpClientがClientインターフェイスを実装していないことがわかります。

私は今このアプローチを使用しています。 https://medium.com/@nullthemall/execute-retrofit-requests-directly-on-okhttp-2-2-7e919d87b64e

私は変更履歴を誤解しましたか? Maye Retrofit 1.9は、クラスパスにあるときにOkHttpClient 2.2を使用できますが、インターフェイスはまだ適合していませんか?

答えて

15

Clientの実装を受け入れるRestAdapter.Builderには、OkHttpClientが渡されています。 OkHttpClientは、Clientの実装で使用されていない場合、Retrofitにのみ関連していません。

あなたはClient

.setClient(new OkClient(httpClient))

OkHttpClient httpClient = new OkHttpClient(); 
httpClient.interceptors().add(new TokenExpiredInterceptor()); 

mRestAdapter = new RestAdapter.Builder() 
     .setEndpoint(API_ENDPOINT) 
     .setClient(new OkClient(httpClient)) 
     .setLogLevel(BuildConfig.DEBUG ? 
       RestAdapter.LogLevel.FULL : 
       RestAdapter.LogLevel.NONE) 
     .setRequestInterceptor(new AuthorizationInterceptor()) 
     .build(); 
+0

感謝を実装OkHttpClientOkClientにインスタンスを渡す必要があります!私はそれを逃したとは思えません:p – dzan

+0

@UsmanAfzalこれは質問とは無関係です。誰かがこの問題を以前に持っているかどうかを調べるか、あなた自身の質問をしてください。 –

関連する問題