gpt4 book ai didi

proxy - 在 Apache HttpClient 4.1.3 中设置 nonProxyHosts

转载 作者:行者123 更新时间:2023-12-04 20:17:39 27 4
gpt4 key购买 nike

我无法通过回答这个问题来帮助自己。

如何在 Apache HttpClient 4.1.3 中设置 nonProxyHosts?

在旧的 Httpclient 3.x 中,这非常简单。你可以使用 setNonProxyHosts 方法设置它。

但是现在,新版本没有等效的方法。我一直在查看 api 文档、教程和示例,但到目前为止还没有找到解决方案。

要设置普通代理,您可以这样做:

    HttpHost proxy = new HttpHost("127.0.0.1", 8080, "http");
DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);

有人知道新版本 httpclient 4.1.3 中是否有用于设置 nonProxyHosts 的开箱即用解决方案,还是我必须自己做
    if (targetHost.equals(nonProxyHost) {
dont use a proxy
}

提前致谢。

最佳答案

@moohkooh:这是我解决问题的方法。

DefaultHttpClient client = new DefaultHttpClient();

//use same proxy as set in the system properties by setting up a routeplan
ProxySelectorRoutePlanner routePlanner = new ProxySelectorRoutePlanner(client.getConnectionManager().getSchemeRegistry(),
new LinkCheckerProxySelector());
client.setRoutePlanner(routePlanner);

然后你的 LinkcheckerProxySelector() 会喜欢这样的东西。
private class LinkCheckerProxySelector extends ProxySelector {

@Override
public List<Proxy> select(final URI uri) {

List<Proxy> proxyList = new ArrayList<Proxy>();

InetAddress addr = null;
try {
addr = InetAddress.getByName(uri.getHost());
} catch (UnknownHostException e) {
throw new HostNotFoundWrappedException(e);
}
byte[] ipAddr = addr.getAddress();

// Convert to dot representation
String ipAddrStr = "";
for (int i = 0; i < ipAddr.length; i++) {
if (i > 0) {
ipAddrStr += ".";
}
ipAddrStr += ipAddr[i] & 0xFF;
}

//only select a proxy, if URI starts with 10.*
if (!ipAddrStr.startsWith("10.")) {
return ProxySelector.getDefault().select(uri);
} else {
proxyList.add(Proxy.NO_PROXY);
}
return proxyList;
}

所以我希望这会帮助你。

关于proxy - 在 Apache HttpClient 4.1.3 中设置 nonProxyHosts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10297837/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com