一、使用Java自帶的JAX-WS技術
Java自帶了JAX-WS(Java API for XML Web Services),這是一個Java EE標準。使用JAX-WS可以輕鬆調用Web服務。使用JAX-WS調用Web服務主要有3個步驟:
1、首先需要生成客戶端代碼,生成代碼有兩種方法,一種是使用wsimport命令,另一種是使用Eclipse IDE自動生成。
// 使用wsimport命令生成 wsimport -keep http://example.com/service?wsdl // Eclipse IDE自動生成 1. 在Eclipse中,選擇 File->New->Other->Web Services->Web Service Client,然後輸入Web服務的WSDL URL。 2. 選擇生成客戶端代碼的輸出目錄和包名,並點擊Finish。
2、執行生成的Java類中的方法,該方法通過SOAP協議發送SOAP消息並接收SOAP響應,因此需要使用JAXB(Java Architecture for XML Binding)來將在SOAP請求和響應中傳輸的XML數據編組和解組。
// 使用Java代碼調用Web服務 // 創建服務 Service service = Service.create(new URL("http://example.com/service?wsdl"), new QName("http://example.com/service", "ServiceName")); // 獲取服務端口 Port port = service.getPort(PortName.class); // 調用服務方法 port.methodName(param1, param2, ...);
3、處理響應結果,根據Web服務返回的數據格式,使用JAXB反序列化響應XML數據並拿到數據。
二、使用Apache的Axis2框架
Apache的Axis2框架是一個流行的Web服務框架,可以用來創建和調用Web服務。使用Axis2框架調用Web服務需要以下步驟:
1、使用wsdl2java命令生成客戶端代碼。
// 使用wsdl2java命令生成 wsdl2java -uri http://example.com/service?wsdl -d adb -o output/src // Eclipse插件生成(Axis2 Tools插件) 1. 在Eclipse中,選擇 File->New->Other->Axis2 Wizards->Java2WSDL,選擇要生成代碼的Java類,設定要生成的目錄和包路徑,並生成相應的WSDL文件。 2. 選擇 File->New->Other->Axis2 Wizards->WSDL2Java,選擇要生成代碼的WSDL文件,設定要生成的目錄和包路徑,並生成相應的Java類文件。
2、創建ServiceClient對象,設置Web服務的端點地址和方法調用參數。
// 使用Java代碼調用Web服務 ServiceClient serviceClient = new ServiceClient(); Options options = new Options(); options.setTo(new EndpointReference("http://example.com/service")); options.setAction("urn:methodName"); serviceClient.setOptions(options); // 設置方法參數 OMElement payload = ...; serviceClient.sendReceive(payload);
3、處理響應結果,這裡的響應結果是一個OMElement對象,需要使用AXIOM(Apache XML Object Model)API來解析XML並拿到數據。
三、使用Spring的WebServiceTemplate
Spring框架的WebServiceTemplate類可以方便地調用Web服務。可以通過兩種方式創建WebServiceTemplate實例:
1、使用Spring的配置文件
<!-- 創建WebServiceTemplate對象 --> <bean id="webServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate"> <property name="marshaller" ref="marshaller"/> </bean>
2、使用Java代碼創建WebServiceTemplate實例
// 使用Java代碼調用Web服務 WebServiceTemplate webServiceTemplate = new WebServiceTemplate(); webServiceTemplate.setDefaultUri("http://example.com/service"); // 設置Marshaller和Unmarshaller webServiceTemplate.setMarshaller(marshaller); webServiceTemplate.setUnmarshaller(unmarshaller); // 設置請求消息和響應消息的攔截器 webServiceTemplate.setInterceptors(new ClientInterceptor[] {...}); // 創建請求消息 Object request = ...; // 調用Web服務 Object response = webServiceTemplate.marshalSendAndReceive(request);
四、結語
本文介紹了三種調用Web服務的技巧,分別是Java自帶的JAX-WS技術、Apache的Axis2框架和Spring的WebServiceTemplate類。使用這些技巧,我們可以輕鬆地調用Web服務並使用相應的響應結果。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/303614.html