我最近开始开发一些SOAP和REST Web服务。在SOAP Web服务中,我发现我必须先开发一个客户端,以便可以使用该服务。创建soap web服务客户端的方法
我想知道为Web服务开发客户端的不同方法。
我看到为SOAP开发客户端的方式Web服务独立于Web服务实现(CXF,AXIS,JAXB)。例如,创建客户端的方法是使用wsimport
命令行,该命令行通过将WSDL作为参数生成客户端代码。
其他方式呢?
我最近开始开发一些SOAP和REST Web服务。在SOAP Web服务中,我发现我必须先开发一个客户端,以便可以使用该服务。创建soap web服务客户端的方法
我想知道为Web服务开发客户端的不同方法。
我看到为SOAP开发客户端的方式Web服务独立于Web服务实现(CXF,AXIS,JAXB)。例如,创建客户端的方法是使用wsimport
命令行,该命令行通过将WSDL作为参数生成客户端代码。
其他方式呢?
要调用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)使用和饲料它从一些框架/库(JAX-WS,Axis2中,CXF等)的工具(wsimport的,WSDL2Java的,等等),以得到一个客户端抽象调用使用Java对象并返回Java对象的简单方法调用。
4)您可以想到的任何其他方法来创建SOAP消息并将其作为POST请求发送(我看到您标记了问题JAXB,也会这样做......)。
现在调用SOAP Web服务非常普遍,所以没有人花费时间构建客户端,因为几乎每种语言的工具都可以从WSDL生成一个客户端。这是样板代码。
人们只是想要一个客户,在项目中推它,使用它,并继续在他们的应用程序中做更重要的事情。这就是为什么大多数人会选择第3点)。
我看到开发SOAP Web服务客户端的方式是独立的Web服务实现
是的,你可以在一个编程语言/技术堆栈在另一个服务和客户端。 SOAP协议是常见的分母。尊重协议和服务合同,该服务可与任何客户协同工作。