繁体   English   中英

如果每个请求都有一个改造实例,将会怎样?

[英]What will happen if every request has a retrofit instance?

我最近在想一个问题。

如果每个请求都有一个改造实例,将会发生什么?

我希望每个请求都具有改造实例的原因:

每个改造实例都有一个OkHttpClient实例 ,因此我想将Interception添加到OkhttpClient,但并非每个请求都应被拦截 ,并且我还想向OkHttpClient添加一些相同的标头 ,但并非每个请求都必须具有相同的标头 ,例如登录时请求,我不需要添加令牌。但是可能需要其他请求。

因此,我的方法是让每个请求都具有一个改造实例 ,之前我有一个演示,但是请求的数量很少 ,所以我不确定在有太多请求时是否会麻烦

我有两个问题:

1.它会产生一些异常吗?还是会导致堆栈溢出?

2.是否有解决该问题的更好方法?

是否有其他人具有相同的经验或有什么想法要问?

您可以使用@Headers批注将静态/动态标题添加到Retrofit 此外,您不应按照文档中所述创建单独的OkHttp实例:

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

如果您想为每个OkHttp不同的配置,只需使用client.newBuilder() (可从3.x版本获得):

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

如果@Headers不适合您,只需创建想要创建不同Retrofit服务的OkHttpClient配置,就可以了。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM