1

我需要帮助来选择一种方法并根据该帮助采取某些行动,或者如果我能得到它的建议。

我得到了一个 wsdl 的 URL 如果我生成存根,我正在使用该 web 服务的功能我生成存根 3 种不同的方式 - (一些冗余) - Eclipse - Ant 命令(创建与 Eclipse 相同的结构) - 使用 maven

<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>

maven 创建了一个稍微不同的 API,但是 - 都是可行的。

现在,我得到了一个 URL,我也在生成一个 API,并且能够进行调用,但是,返回一个错误 - 错误是系统特定的。这意味着,我确实与 Web 服务功能进行了通信。

因此,webservice 的所有者将示例代码发送给我——他们正在使用 SOAP 消息与 webservice 对话。它工作正常。

// 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 服务的非常可靠和简单的方法。那么,我应该强迫网络服务所有者做某事,解决问题,还是我没有在我的存根中添加一些东西,.. 或者这里有什么其他可能出错的地方?

你能给的一般建议是什么?

谢谢

4

1 回答 1

0

免责声明:由于问题的性质,这是基于意见的答案。

我应该强迫网络服务所有者做某事,解决问题,还是我没有在我的存根中添加一些东西,.. 或者其他任何可能出错的地方

在 SOAP 中,涉及到两方,服务器和客户端。然后在他们之间有一个叫做 as 的合同WSDL。因此,如果他们为您提供了WSDL,您应该能够生成服务器应该能够理解的特定 SOAP 消息。因此,您尝试在不强迫他们的情况下解决客户端问题。我不太确定您的实际用例和您尝试使用的 SOAP 服务,但通常服务提供商(即 SOAP 服务)坚持协议,然后客户端需要调整才能使用该特定服务,除非您也是对他们来说是个大客户,可能会迫使他们改变可能为其他客户服务的系统(SOAP 客户端。)。例如,如果您正在使用AzureSAPSOAP 服务要使用特定的服务,您必然会做出AzureSAP可以理解的消息(尽管如此大的玩家提供了他们的 SDK 来处理这些不必要的麻烦)。

于 2019-04-05T11:36:56.113 回答