我有许多端点,必须有不同的ErrorHandler
s& RequestInterceptor
为他们中的一些人。在this回答JakeWharton(其中一位Retrofit
开发者)说RestAdapter
应该被视为单身人士。在同一篇文章中,另一个answer表示单例地图用于实现特定于端点的RequestInterceptors
。
要确保在使用RestAdapters
时所有OkHttp
使用相同的连接池,我将在所有适配器中共享OkHttpClient
个
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setConnectTimeout(10000, TimeUnit.MILLISECONDS);
okHttpClient.setReadTimeout(10000, TimeUnit.MILLISECONDS);
OkClient okClient = new OkClient(okHttpClient);
RestAdapter restAdapter1 = new RestAdapter.Builder()
.setClient(okClient)
.setLogLevel(RestAdapter.LogLevel.FULL)
.setEndpoint("http://example.com/)
.setErrorHandler(ErrHandlerFactory.get(Endpoint1.class))
.setRequestInterceptor(ReqInterceptorFactory.get(Endpoint1.class))
.build();
RestAdapter restAdapter2 = new RestAdapter.Builder()
.setClient(okClient)
.setLogLevel(RestAdapter.LogLevel.FULL)
.setEndpoint("http://example.com/)
.setErrorHandler(ErrHandlerFactory.get(Endpoint2.class))
.setRequestInterceptor(ReqInterceptorFactory.get(Endpoint2.class))
.build();
Endpoint1
& Endpoint2
是遵循Retrofit注释的interface
。然后构建RestAdapter用于进一步的api调用。这是进行端点特定操作的最佳方式还是我遗漏了什么?