4

我需要连接到内部 Intranet Web 服务。我的公司使用代理服务器访问 Internet,但 Intranet 站点不通过代理。我可以在 IE 和 Firefox 中导航到 WSDL,但我必须将地址添加到两个浏览器中的代理例外列表中。

当我使用 wsimport 时,由于代理服务器,我无法获取 WSDL。添加或省略 -httpproxy 参数会给我一个错误“无法通过代理隧道”所以我猜这不是我需要这样做的方式。

有谁知道我可以告诉 wsimport 忽略此 url 的代理服务器的方法吗?

尼尔

4

6 回答 6

7

我到达这篇文章是为了寻找一种使用 wsimport.exe(JDK 1.6、1.7 等的一部分)对内部(内部网)URL 使用代理并跳过外部 URL 代理(w3c.com)的方法。我看到它没有放置 nonProxyHosts 的工具,所以我继续使用 Java 类调用。

像这样的东西

java -Dhttp.proxyHost=proxyServer -Dhttp.proxyPort=9000 -Dhttp.nonProxyHosts="localhost|*.intranet-domain.com" -classpath %JAVA_HOME%\lib\tools.jar com.sun.tools.internal.ws.WsImport -p com.ws.client.pkg http://app.intranet-domain.com/endpoint?wsdl 

为了更容易阅读:

java
  -Dhttp.proxyHost=proxyServer
  -Dhttp.proxyPort=9000
  -Dhttp.nonProxyHosts="localhost|*.intranet-domain.com"
  -classpath %JAVA_HOME%\lib\tools.jar
  com.sun.tools.internal.ws.WsImport
  -p com.ws.client.pkg
  http://app.intranet-domain.com/endpoint?wsdl 

请记住,“-Dhttp.nonProxyHosts”仅在您之前在该行中配置代理时才有效,您需要所有参数。因此,如果您只想禁用默认代理,则必须在此处再次对其进行配置。

于 2013-06-06T05:26:15.777 回答
2

我找到了答案。您需要将以下内容添加为 JVM 参数,它使用 Internet Explorer(或我假设 Mac 上的 Safari)代理地址和排除列表。

-Djava.net.useSystemProxies=true

我从http://jeannotsweblog.blogspot.co.uk/2009/06/wsimport-with-proxy.html得到了分析器

于 2012-04-27T09:09:25.123 回答
2

目前wsimport在这方面被打破了。

我为此创建了两张票:

  1. https://java.net/jira/browse/JAX_WS-1154
  2. https://java.net/jira/browse/JAX_WS_COMMONS-132
于 2014-07-29T20:26:23.060 回答
2
wsimport -keep -verbose -httpproxy:172.18.14.192:8089 http://xxx.abc.com/services/s1?wsdl

根据Oracle JAVA 9 wsimport 文档

于 2018-11-19T02:36:43.463 回答
1

您也可以使用--httpproxywsimport 选项的选项 -

wsimport -keep -httpproxy:USERNAME:passwdsabc001@proxy.yourcmpny.com

于 2018-02-11T13:52:42.910 回答
0

如果您可以在应用程序级别设置该标志,Neil Kennedy 建议的方法将起作用。但是,如果您想对特定 url 使用代理,请查看 ProxySelector 类。您可以编写自己的代理选择器类,它使用您的代理主机和端口扩展 ProxySelector,然后将其设置为默认代理选择器。看看这个线程如何在不设置系统的情况下将 HTTP 代理用于 JAX-WS 请求 -广泛的财产?伊洛叔叔给出的答案。另请查看http://docs.oracle.com/javase/7/docs/technotes/guides/net/proxies.html了解 Proxyselector 的详细信息,它清楚地解释了正在发生的事情。

于 2016-04-05T19:38:21.860 回答