多个Retrofit RestAdapters

时间:2014-10-30 00:09:37

标签: java retrofit okhttp

我有许多端点,必须有不同的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调用。这是进行端点特定操作的最佳方式还是我遗漏了什么?

0 个答案:

没有答案