当OkHttp尝试代理,并且该路由失败一次后,每个请求之后都将完全绕过Android系统代理。因此,使用Charles进行调试很困难。
我目前拥有下面的代码,但它仅设置为调试版本。它运作得很好,但这是一个hack,我们希望将其发布给所有用户。
是否有一些隐藏的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));
}