2015-01-10 15 views
9

Bu son sürümlerin uyumlu olması gerektiğini düşündüm. Bu tweet var; https://twitter.com/JakeWharton/status/553066921675857922 ve Retrofit 1.9'daki değişim de bundan bahseder.Retrofit 1.9 OkHttp 2.2 ve önleyiciler ile

 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(); 

Hala çalışmıyor:

Ancak bu çalıştığınızda. SetClient yöntemi, uyumsuz bir istemci nesnesi hakkında şikâyet eder;

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) 

Neyi eksik? OkHttpClient'in İstemci arayüzünü uygulamadığını da görüyorum.

Şu an bu yaklaşımı kullanıyorum; https://medium.com/@nullthemall/execute-retrofit-requests-directly-on-okhttp-2-2-7e919d87b64e

Değişiklikleri yanlış yorumladım mı? Maye Retrofit 1.9, sınıf yolundayken OkHttpClient 2.2'yi kullanabilir ancak arayüz henüz uyarlanmadı mı?

cevap

15

'u Client uygulamalarını kabul eden 'a geçiriyorsunuz. uygulamalarında kullanılmazsa, yalnızca OkHttpClient, Retrofit ile ilişkili değildir.

Sen 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

Teşekkür uygulayan OkHttpClient için OkClient örneğini geçmelidir! Bunu özlediğime inanamıyorum: p – dzan

+0

@UsmanAfzal Bu soruyla ilgisi yoktur, birisinin bu konuya daha önce sahip olup olmadığını veya kendi sorunuzu sorup sormamasını aramalısınız. –