1

我对 SOAP 网络服务非常陌生。想知道几件事.. 1. 有一个 URL(比如,A),我们可以通过它访问 WSDL,然后是“soap:address”的用途。我找到了一个新的 IP 地址(比如 B)作为 WSDL 中提到的“soap:address location”,但这个 URL 与 A 完全不同。我的问题是为什么需要 B 地址 - 这是驻留的机器的一些内部 IP 地址在 A 后面,客户端完全无法访问。什么是流量?

  1. 由于 A 不是公开的,所以主机已授予我的 WAN IP 访问权限,以便我可以访问 A。现在我可以从简单的 Java 代码访问 A url(获取 WSDL 内容)

    URL oracle = 新 URL(A);

    URLConnection yc = oracle.openConnection(proxy);

因为我在代理防火墙后面。但我可以通过

URLConnection yc = oracle.openConnection();

由此我可以得出结论,Java 默认会尝试绕过机器的默认代理配置来连接任何 URL?

  1. 我从 WSDL URL 生成了客户端存根,发现它用 A 注释

    @WebServiceClient(name = "BDCDataExchange", targetNamespace = "some url", wsdlLocation = "A"

但是当我运行它给出的代码时

com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.ConnectException: Connection timed out: connect
at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(Unknown Source)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(Unknown Source)

由于我可以从简单的 java 代码中访问 A,这个异常是否意味着我无法访问内部的 soap:address B?

但是,如果我使用本地 WSDL 路径生成客户端,则相同的客户端代码正在工作,例如

wsimport A   //not working while executing, above exception comes
wsimport <a local path where I saved the WSDL file>  //it works when I run
4

0 回答 0