springboot webservice cxf 客户端调用
生活随笔
收集整理的這篇文章主要介紹了
springboot webservice cxf 客户端调用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
大家好,我是烤鴨:
? ?這篇文章分享的是xcf webservice接口調用。如果接口提供方要求是webservice調用的話,可以參考這篇內容。
?
1.? ? pom文件
<dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxws</artifactId><version>3.2.5</version> </dependency> <dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-transports-http</artifactId><version>3.2.5</version> </dependency>2.? ? xml報文構造
首先看一下,接口方要求的xml格式。
<?xml version="1.0" encoding="GBK" standalone="yes"?> <ROOT><request_info><PHONE_NO>234</PHONE_NO><ORDER_ID>123</ORDER_ID></request_info> </ROOT>?
首先構造實體類
RequestRootWebservice.java (xml的ROOT節點) package com.test.test.webservice;import lombok.Data; import javax.xml.bind.annotation.*;@XmlAccessorType(value=XmlAccessType.FIELD) @XmlRootElement(name = "ROOT") @Data public class RequestRootWebservice {private RequestInfo request_info; } RequestInfo.java (xml子節點) package com.test.test.webservice;import lombok.Data;import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType;/*** Created by gmwang on 2018/7/24*/ @Data @XmlRootElement(name = "request_info") @XmlType(propOrder = { "PHONE_NO", "ORDER_ID"}) public class RequestInfo {private String PHONE_NO;private String ORDER_ID; }?
序列化和反序列化的結果:
3.? ? 請求代碼
public void testSend1() {// 創建動態客戶端JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();Client client = dcf.createClient("http://localhost:8080/services/TestService?wsdl");// 需要密碼的情況需要加上用戶名和密碼 // client.getOutInterceptors().add(new ClientLoginInterceptor("admin","123345"));QName name=new QName("http://service.policyconfirm.apps.gateway.sinosoft.com/","getStudents");try {RequestRootWebservice root = new RequestRootWebservice();RequestInfo requestInfo = new RequestInfo();requestInfo.setORDER_ID("123");requestInfo.setPHONE_NO("234");root.setRequest_info(requestInfo);JAXBContext context = JAXBContext.newInstance(RequestRootWebservice.class);Marshaller marshaller = context.createMarshaller();marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);marshaller.setProperty(Marshaller.JAXB_ENCODING, "GBK");marshaller.marshal(root, System.out);StringWriter writer = new StringWriter();marshaller.marshal(root, writer); // System.out.println(writer.toString());//反序列化Unmarshaller unmarshaller = context.createUnmarshaller();StringReader reader = new StringReader(writer.toString());RequestRootWebservice stu2 = (RequestRootWebservice) unmarshaller.unmarshal(reader);System.out.println("stu2"+stu2);Object[] objects = client.invoke(name,writer.toString());String res = "";if(objects != null && objects.length != 0){res = objects[0].toString();}System.out.println("返回數據:" + res);} catch (Exception e) {e.getMessage();e.printStackTrace();}}?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的springboot webservice cxf 客户端调用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何提升JSON.stringify()
- 下一篇: SQL数据库。按年,月,日查询