对于SOAP,我们是否需要从WSDL生成客户端存根?

时间:2016-05-23 13:53:19

标签: java web-services soap groovy wsdl

使用SOAP,与REST一样,我是否可以安全地假设客户端调用Web服务所做的一切都是将一些XML发布到端点URL?如果是这种情况,那么是否需要使用像Axis或wsimport这样的工具从WSDL生成客户端存根类?

跳过此步骤并自己构建原始XML并执行整个SOAP信封的HTTP Post是否有任何问题?

这是我想要在groovy中做的事情。

 def myXml = "<soapenv:Envelope>" +
            "  <soapenv:Body>" +
            "    <myservice:invoke>" +
            "        <username xsi:type=\"xsd:string\">$username</username>" +
            "        <apiKey xsi:type=\"xsd:string\">$apiKey</apiKey>" +
            "    </myservice:invoke>" +
            "  </soapenv:Body></soapenv:Envelope>"

 HttpMethod method = new PostMethod('https://myservice.javaguy.com/Service.asmx')

method.setRequestEntity(new StringRequestEntity(myXml))
method.setRequestHeader('Content-type','text/xml')
def responseCode = httpClient.executeMethod(method)

1 个答案:

答案 0 :(得分:2)

声明&#34; SOAP,作为REST&#34;没有任何意义。 REST是一种架构风格。 SOAP是一种不遵守REST标准的Web服务协议。可以通过HTTP调用SOAP服务。

如果使用SOAP over HTTP,则可以通过将SOAP消息发布到正确的资源来调用SOAP。在链接到下面的SOAP维基百科页面上有一个合理的例子。 https://en.wikipedia.org/wiki/SOAP#Example_message

避免使用WSDL客户端生成器并构建自己的SOAP客户端没有任何问题。发电机就是为了让您更容易实现这一目的。生成的客户端将为您管理HTTP客户端,反序列化/序列化逻辑,SOAP异常处理和转换。如果您决定不使用它们,那么您必须自己编写该逻辑。

相关问题