2017-08-23 39 views
1

我建立我的应用程序类OkHttp并保持静态引用。这样,我在任何时候都有一个OkHttp实例。Okhttp不同的配置

okHttpClient = new OkHttpClient.Builder() 
       .cache(new Cache(context.getCacheDir(), 50 * 1024 * 1024)) 
       .addInterceptor(new HttpInterceptor()) 
       .build(); 

现在,我想提出两种请求,一是要求的OAuth2而其他需要作为参数传递给请求的URL提供的API密钥和密码。对于需要OAuth2的请求,我是using an interceptor

所以问题是后者请求使用度假村到拦截器进行认证,从而请求将失败。有什么办法可以告诉它“看,忽略拦截器的这个请求”?或者我需要两个OkHttpClient实例?

回答

1

您需要创建以来连接到它不会忽略拦截单个实例机智拦截后两个实例。 一个黑客可以识别链接在拦截并忽略拦截操作针对该请求。

1

最简洁的解决方案是有一个单一的OkHttp实例,但在你的拦截器必须决定如何进行身份验证的逻辑。

此示例ServiceInterceptor.java检查每个请求,并决定如何在一个可插入的方式进行验证。你可以做类似的事情。

有此方法在不同客户的诸多好处,包括执行

  • 可能性

    • 重用这些连接可以例如合并多个主机www.mysvc.com和api.mysvc.com
    • 支持跨主机重定向