我最近开始开发一些SOAP和REST Web服务。在SOAP Web服务中,我发现我必须首先开发一个客户端,以便我可以使用该服务。
我想知道为Web服务开发客户端的不同方法。
我看到为SOAP Web服务开发客户端的方法独立于Web服务实现(CXF,AXIS,JAXB)。例如,创建客户端的方法是使用wsimport
命令行,通过将WSDL作为参数来生成客户端代码。
其他方法呢?
答案 0 :(得分:1)
要调用SOAP Web服务,您必须向其发送格式正确的SOAP消息,该消息尊重服务的合同。那就是它!
所以基本上创建一个客户端,你只需要构建那个XML消息,例如,给定this service,你就可以做到以下(我假设Java,因为你标记了这样的问题 - 但是它适用于任何编程语言):
1)使用字符串连接(这是最基本的):
int number1 = 1;
int number2 = 2;
String myMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+ "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
+ " <soap:Body>"
+ " <Add xmlns=\"http://tempuri.org/\">"
+ " <intA>" + number1 + "</intA>"
+ " <intB>" + number2 + "</intB>"
+ " </Add>"
+ " </soap:Body>"
+ "</soap:Envelope>";
然后执行(基本)POST that to the service注意为其提供所需的HTTP标头(如SOAPAction
等)。
2)手动构建XML文档以发送到服务,例如using SAAJ。
3)使用service WSDL并将其从某个框架/库(JAX-WS,Axis2,CXF等)提供给工具(wsimport,wsdl2java等)以获取返回一个客户端,它将对Java对象和返回Java对象的简单方法调用的调用抽象化。
4)您可以考虑创建SOAP消息并将其作为POST请求发送的任何其他方法(我看到您标记了JAXB的问题,也会这样做......)。< / p>
现在调用SOAP Web服务非常普遍,当几乎每种语言都有工具从WSDL生成一个时,没有人会花时间构建客户端。它的样板代码。
人们只是想要一个客户,把它推到项目中,使用它,然后继续在他们的应用程序中做更重要的事情。这就是大多数人为什么选择第3点的原因。
我认为为SOAP Web服务开发客户端的方法与Web服务实现无关
是的,您可以在编程语言/技术堆栈中使用服务,在另一个中使用客户端。 SOAP协议是共同的标准。尊重协议和服务合同,服务可以与任何客户合作。