我最近開始開發一些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協議是常見的分母。尊重協議和服務合同,該服務可與任何客戶協同工作。