我有一个Web应用程序,必须连接到外部Web服务(使用Axis客户端)。我必须做两件事:
使用直接连接
http://localhost:7001/webApp/getImg?id=22
请注意,如果我们使用系统属性(http.proxyHost等)而不是ProxySelector,它就像魅力一样。
但事情是所有本地调用都被路由到代理服务器,我不想要。
所以,这只是一个简单的问题 - 如何实现ProxySelector
,其执行方式与使用代理系统属性时相同?
答案 0 :(得分:0)
您也可以通过设置http.nonProxyHosts=localhost
来实现系统属性。如果您想使用ProxySelector
进行操作,请尝试使用此类
final Proxy PROXY = new Proxy(Proxy.Type.HTTP,
new InetSocketAddress("my.proxy.server", 8080));
ProxySelector.setDefault(new ProxySelector() {
public List<Proxy> select(URI u) {
if(u != null && !"localhost".equals(u.getHost())) {
return Arrays.asList(PROXY, Proxy.NO_PROXY);
}
else {
return Collections.singletonList(Proxy.NO_PROXY);
}
}
public void connectFailed(URI u, SocketAddress sa, IOException e) {
// do nothing
}
});