硬编码Java代理,用于连接特定URL

时间:2013-02-26 12:22:48

标签: java web-services proxy axis2

我有一个Web应用程序,必须连接到外部Web服务(使用Axis客户端)。我必须做两件事:

  • 允许webapp使用给定的HTTP代理进行外部通信(以授权WS客户端)
  • 当我们通过像

    这样的URI执行本地调用时,
  • 使用直接连接

    http://localhost:7001/webApp/getImg?id=22

请注意,如果我们使用系统属性(http.proxyHost等)而不是ProxySelector,它就像魅力一样。

但事情是所有本地调用都被路由到代理服务器,我不想要。

所以,这只是一个简单的问题 - 如何实现ProxySelector,其执行方式与使用代理系统属性时相同?

1 个答案:

答案 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
  }
});