2016-04-28 85 views
0

我最近开始开发一些SOAP和REST Web服务。在SOAP Web服务中,我发现我必须先开发一个客户端,以便可以使用该服务。创建soap web服务客户端的方法

我想知道为Web服务开发客户端的不同方法。

我看到为SOAP开发客户端的方式Web服务独立于Web服务实现(CXF,AXIS,JAXB)。例如,创建客户端的方法是使用wsimport命令行,该命令行通过将WSDL作为参数生成客户端代码。

其他方式呢?

回答

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)使用​​和饲料它从一些框架/库(JAX-WS,Axis2中,CXF等)的工具(wsimport的,WSDL2Java的,等等),以得到一个客户端抽象调用使用Java对象并返回Java对象的简单方法调用。

4)您可以想到的任何其他方法来创建SOAP消息并将其作为POST请求发送(我看到您标记了问题JAXB,也会这样做......)。

现在调用SOAP Web服务非常普遍,所以没有人花费时间构建客户端,因为几乎每种语言的工具都可以从WSDL生成一个客户端。这是样板代码。

人们只是想要一个客户,在项目中推它,使用它,并继续在他们的应用程序中做更重要的事情。这就是为什么大多数人会选择第3点)。

我看到开发SOAP Web服务客户端的方式是独立的Web服务实现

是的,你可以在一个编程语言/技术堆栈在另一个服务和客户端。 SOAP协议是常见的分母。尊重协议和服务合同,该服务可与任何客户协同工作。