大家好,我是烤鸭:

   这篇文章分享的是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();
        }
    }

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐