2017-03-18 49 views
0

我最近在想一个问题。如果每个请求都有改进实例,会发生什么情况?

如果每个请求都有改进实例,会发生什么情况?

我希望每个请求的原因有改装实例:

改装实例OkHttpClient实例,所以我想补充 拦截到OkhttpClient,但不是每个请求应是 截获,我也想添加一些相同的头文件 OkHttpClient,但不是每一个任务必须有这些相同的标头,就像它的登录请求时,我不需要添加令牌,但其他请求可能需要。

所以我的办法是让每一个请求已改装实例,我以前有一个演示,但请求的数量都几个,所以我不知道是否当有过多的请求会它来麻烦

我有2个问题:

将它做一些例外,否则会令栈溢出?

2.如果有更好的方法来解决这个问题?

有其他人有相同的经验或有一些想法质疑?

+0

我使用单个OkHttpClient实例与拦截器,然后我使用SharedPreferences检查在截距法登录状态。 – KTCO

回答

2

您可以使用@Headers注释将静态/动态标头添加到Retrofit。此外,如在文档说明你不应该创建单独OkHttp例如:当您创建一个单一的OkHttpClient实例,并重新使用它为所有的HTTP调用的

OkHttp性能最佳。这是因为每个客户端都拥有自己的连接池和线程池。重用连接和线程可减少延迟并节省内存。相反,为每个请求创建一个客户端会浪费空闲池上的资源。

如果你想为每个OkHttp不同的配置只使用client.newBuilder()(可从3.x版):

您可以自定义共享OkHttpClient实例与newBuilder()。这将生成共享相同连接池,线程池和配置的客户端。使用构建器方法为特定目的配置派生客户端。

如果@Headers是不适合你,就像你想创建不同Retrofit服务创建的OkHttpClient尽可能多的配置,你会没事的。

http://square.github.io/okhttp/3.x/okhttp/

相关问题