2016-04-28 64 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協議是常見的分母。尊重協議和服務合同,該服務可與任何客戶協同工作。