【问题标题】:Hard coding Proxy in Java for connecting to specific URL用于连接特定 URL 的 Java 硬编码代理
【发布时间】:2023-03-03 13:17:01
【问题描述】:

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

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

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

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

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

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

那么,只是一个简单的问题——如何实现ProxySelector,它的执行方式与使用代理系统属性时的方式相同?

【问题讨论】:

    标签: java web-services proxy axis2


    【解决方案1】:

    您也可以通过设置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
      }
    });
    

    【讨论】:

    • 嗨,Ian,问题是我在我的 Java 应用程序中使用了两个 Web 服务。 1.)使用 HTTPS 连接到外部网站(需要代理服务器) 2.)另一个通过 HTTP 连接到内部网站(另一个应用程序不在 localhost 上..它在其他服务器上 10.24.240.21 现在我使用 System.setProperty ("https.proxyHost", "XXX.XXX.XX.XXX");//PROXY ADDRESS System.setProperty("https.proxyPort", "3128"); //PROXY PORT 如何为第二个网络服务执行此操作它不使用代理服务器
    猜你喜欢
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 2021-09-04
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多