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();
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烤鸭的世界我们不懂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值