OkHttp3 的非代理主机
Non proxy hosts for OkHttp3
如何设置哪些主机名不应该传递给 OkHttpClient
使用代理发出的一个请求?
OkHttp3 中的 vm 参数 -Dhttp.nonProxyHosts
是否有等价物?
例如:
final OkHttpClient okHttpClient = new OkHttpClient
.Builder()
.connectTimeout(60, TimeUnit.SECONDS)
.writeTimeout(60, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.SECONDS)
.proxy(new Proxy(Proxy.Type.HTTP,
new InetSocketAddress(defaultProxyHostName, Integer.parseInt(defaultProxyPort))))
.build();
您要查找的 API 是 ProxySelector。您可以在 OkHttpClient 上进行配置。
经过一番挖掘,我找到了如何去做。
所以我必须创建一个 ProxySelector
来实现何时应用或不应用代理的逻辑。
示例:
final ProxySelector proxySelector = new ProxySelector() {
@Override
public java.util.List<Proxy> select(final URI uri) {
final List<Proxy> proxyList = new ArrayList<Proxy>(1);
// Host
final String host = uri.getHost();
// Is an internal host
if (host.startsWith("127.0.0.1") || StringUtils.contains(nonProxyHostsValue, host)) {
proxyList.add(Proxy.NO_PROXY);
} else {
// Add proxy
proxyList.add(new Proxy(Type.HTTP,
new InetSocketAddress(proxyHostNameValue, Integer.parseInt(proxyPortValue))));
}
return proxyList;
}
@Override
public void connectFailed(URI arg0, SocketAddress arg1, IOException arg2) {
throw new UnsupportedOperationException("Not supported yet.");
}
};
// Set proxy selector
okHttpClientBuilder.proxySelector(proxySelector);
你可以尝试传递参数
-Dhttp.nonProxyHosts=localhost|127.0.0.1|*.example.com
如何设置哪些主机名不应该传递给 OkHttpClient
使用代理发出的一个请求?
OkHttp3 中的 vm 参数 -Dhttp.nonProxyHosts
是否有等价物?
例如:
final OkHttpClient okHttpClient = new OkHttpClient
.Builder()
.connectTimeout(60, TimeUnit.SECONDS)
.writeTimeout(60, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.SECONDS)
.proxy(new Proxy(Proxy.Type.HTTP,
new InetSocketAddress(defaultProxyHostName, Integer.parseInt(defaultProxyPort))))
.build();
您要查找的 API 是 ProxySelector。您可以在 OkHttpClient 上进行配置。
经过一番挖掘,我找到了如何去做。
所以我必须创建一个 ProxySelector
来实现何时应用或不应用代理的逻辑。
示例:
final ProxySelector proxySelector = new ProxySelector() {
@Override
public java.util.List<Proxy> select(final URI uri) {
final List<Proxy> proxyList = new ArrayList<Proxy>(1);
// Host
final String host = uri.getHost();
// Is an internal host
if (host.startsWith("127.0.0.1") || StringUtils.contains(nonProxyHostsValue, host)) {
proxyList.add(Proxy.NO_PROXY);
} else {
// Add proxy
proxyList.add(new Proxy(Type.HTTP,
new InetSocketAddress(proxyHostNameValue, Integer.parseInt(proxyPortValue))));
}
return proxyList;
}
@Override
public void connectFailed(URI arg0, SocketAddress arg1, IOException arg2) {
throw new UnsupportedOperationException("Not supported yet.");
}
};
// Set proxy selector
okHttpClientBuilder.proxySelector(proxySelector);
你可以尝试传递参数
-Dhttp.nonProxyHosts=localhost|127.0.0.1|*.example.com