多个改造对象用于不同的baseUrl和不同的SSLContext

时间:2016-06-16 07:22:24

标签: retrofit retrofit2

我正在编写代码与四个不同的服务器进行通信,其中一个需要两种不同类型的SSL。

我创建了一个Retrofit对象四次以获得四个具有不同baseURL的接口。它就像......

InterfaceOne one = new Retrofit.Builder()
            .baseUrl("address1")
            .build()
            .create(InterfaceOne.class);

InterfaceTwo two = new Retrofit.Builder()
            .baseUrl("address2")
            .build()
            .create(InterfaceTwo.class);

InterfaceThree three = new Retrofit.Builder()
            .baseUrl("address3")
            .build()
            .create(InterfaceThree.class);

InterfaceFour four = new Retrofit.Builder()
            .baseUrl("address4")
            .build()
            .create(InterfaceFour.class);

对我而言似乎重复代码。所以我的第一个问题是,这是一个处理四种不同baseURL的好结构吗?

而且,我将使用以下结构为具有两个不同SSL的服务器。但对我来说已经很难看了。

OkHttpClient okhttp = new OkHttpClient.Builder()
            .sslSocketFactory(getSSLContextOne().getSocketFactory())
            .build();

interfaceFour_1 = new Retrofit.Builder()
            .client(okhttp)
            .baseUrl("address4")
            .build()
            .create(InterfaceFour_1.class);

OkHttpClient okhttp2 = new OkHttpClient.Builder()
            .sslSocketFactory(getSSLContextTwo().getSocketFactory())
            .build();

interfaceFour_2 = new Retrofit.Builder()
            .client(okhttp2)
            .baseUrl("address4")
            .build()
            .create(InterfaceFour_2.class);

有没有更好的方法来改进当前的代码?

0 个答案:

没有答案