Mik*_*die 8 android retrofit okhttp retrofit2 okhttp3
当OkHttp尝试代理,并且该路由失败一次时,该请求之后的每个请求都将完全绕过Android系统代理.因此很难使用Charles进行调试.
我目前有以下代码,但它的设置仅适用于Debug版本.它工作得很好,但它是一个黑客,我们希望为所有用户发布这个.
是否有一些我无法找到的隐藏的OkHttpClient.dontBypassProxy设置?或者,下面的代码看起来是一个很好的解决方案吗?
OkHttpClient.Builder baseClientBuilder = new OkHttpClient.Builder().retryOnConnectionFailure(false).connectionPool(new ConnectionPool(5, 20, TimeUnit.SECONDS));
//Ask OkHttp what proxies we have setup
List<Proxy> proxies = ProxySelector.getDefault().select(URI.create("http://www.somesite.com"));
if (proxies.size() > 0 && proxies.get(0) != Proxy.NO_PROXY) {
//Force OkHttp to always use this proxy
baseClientBuilder.proxy(proxies.get(0));
}
Run Code Online (Sandbox Code Playgroud)
这已在 OkHttp 3.5.0 中修复
\n\nhttps://square.github.io/okhttp/changelog_3x/
\n\n\n\n如果系统\xe2\x80\x99s HTTP\n 代理失败,OkHttp 不再尝试直接连接。此行为令人惊讶,因为 OkHttp 忽略了用户 xe2x80x99s 指定的配置。如果您需要自定义代理回退行为,请实现您自己的 java.net.ProxySelector。
\n
| 归档时间: |
|
| 查看次数: |
1854 次 |
| 最近记录: |