我需要帮助来选择一种方法,并根据该帮助或建议我是否可以获得它采取某些行动。
我得到了一个 wsdl 的网址 如果我生成存根,则我正在使用该 Web 服务的功能 我生成存根 3 种不同的方式 - (有些冗余) -日蚀 - Ant 命令(创建与日食相同的结构) - 使用马文
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
maven创建了一个略有不同的API,但是 - 所有这些都是可行的。
现在,我得到了一个URL,我也在生成一个API,并且能够进行调用,但是,得到一个错误 - 错误是特定于系统的。 这意味着,我确实与网络服务功能进行了通信。
因此,Web服务的所有者向我发送了示例代码 - 他们正在使用SOAP消息与Web服务进行通信。 而且它工作正常。
// Create SOAP Connection
SOAPConnectionFactory soapConnectionFactory = null;
SOAPConnection soapConnection = null;
soapConnectionFactory = SOAPConnectionFactory.newInstance();
soapConnection = soapConnectionFactory.createConnection();
System.setProperty("https.protocols",
"TLSv1,TLSv1.1,TLSv1.2");
System.setProperty("java.net.useSystemProxies", "true");
String url = "https://someUrl?wsdl";
SOAPMessage soapResponse =
soapConnection.call(createSOAPRequest(), url);
// Process the SOAP Response
try {
String op = printSOAPResponse(soapResponse);
System.out.println("Res" +op);
} catch (Exception e) {
e.printStackTrace();
}
我知道这不是使用Web服务的非常可靠和简单的方法。 所以,我应该强迫网络服务所有者做某事,解决问题,还是我在我的存根中没有添加一些东西,..或者这里还有什么可能出错的?
您可以给出什么一般建议?
谢谢
免责声明:由于问题的性质,这是基于意见的答案。
我应该强迫网络服务所有者做某事,解决问题,还是我没有在我的存根中添加一些东西,..或者这里可能出现的任何其他问题
在 SOAP 中,涉及两方,服务器和客户端。然后他们之间有称为WSDL
的合同。因此,如果他们为您提供了WSDL
,您应该能够生成服务器应该能够理解的特定 SOAP 消息。因此,您尝试在不强迫它们的情况下解决客户端问题。我不太确定您的实际用例和您尝试使用的 SOAP 服务,但通常服务提供商(即 SOAP 服务)坚持协议,然后客户端需要进行调整以使用该特定服务,除非否则您的客户端对他们来说太大,并可能迫使他们更改可能为其他客户提供服务的系统(SOAP 客户端)。 例如,如果您使用Azure
或SAP
SOAP 服务来使用特定服务,则必然会发出Azure
或SAP
可以理解的消息(尽管这些大玩家提供他们的 SDK 来处理这种不必要的麻烦)。