繁体   English   中英

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

[英]For SOAP, do we need to generate client stubs from WSDL?

使用SOAP,就像使用REST一样,我是否可以假设客户端最终调用Web服务所做的全部工作就是将一些XML发布到端点URL? 如果是这样,是否需要使用Axis或wsimport之类的工具从WSDL生成客户端存根类?

跳过此步骤,自己自己构建原始XML,并对整个SOAP信封进行HTTP发布,这有什么问题吗?

这是我想要做的时髦的事情。

 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)

语句“作为REST的SOAP”没有任何意义。 REST是一种建筑风格。 SOAP是不符合REST标准的Web服务协议。 可以通过HTTP调用SOAP服务。

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

避免WSDL客户机生成器,并构建自己的SOAP客户机并没有错。 生成器就在那里为您提供帮助,使它变得更容易。 生成的客户端将为您处理HTTP客户端的管理,反序列化/串行化逻辑,SOAP异常处理和转换。 如果您决定不使用它们,则必须自己编写该逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM