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 客户端调用相关推荐
- java cxf 客户端调用_CXF客户端调用N种方式
方式一: 配置CXF环境变量,用wsdl2java工具自动产生代码.项目结构目录如下: 其中com.yq.webservice下面的所有的java类都是wsdl2java工具自动产生的. JaxWsP ...
- CXF客户端报Cannot create a secure XMLInputFactory问题
cxf客户端调用服务报Cannot create a secure XMLInputFactory 错误 网上普遍的解决方法是: 服务器端缺少了两个jar包 stax2-api-3.1.x.jar ...
- Spring集成CXF发布WebService并在客户端调用
Spring集成CXF发布WebService 1.导入jar包 因为官方下载的包里面有其他版本的sprring包,全导入会产生版本冲突,所以去掉spring的部分,然后在项目根目录下新建了一个CXF ...
- Springboot 基于CXF构建WebService服务
前言 最近因为系统需要接入了一个新的支付通道,一般来说都是使用RestApi 来接入,但是本次接入的支付通道为境外支付,使用的WebService,对于WS我们在实际业务中基本上不会用到,所以查阅了一 ...
- WebService客户端调用常见5种方式
之前系统中使用到了webservice进行第三方通信,这里总结一下常见的5种客户端调用方式. 在此之前我们先简单搭建一个webservice服务端项目,发布一个webservice服务.我这里使用sp ...
- WebService CXF系列: SpringBoot同一个项目中集成JaxWS和JaxRS
WebService CXF系列: SpringBoot同一个项目中集成JaxWS和JaxRS 介绍 项目介绍 项目架构 项目介绍 项目集成的原则 SpringBoot集成JaxWS 1. JaxWs ...
- HTTP 调用 WebService、CXF 动态调用 WebService
概述 Web Service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用 ...
- SpringBoot集成Axis2,部署webservice接口并调用
SpringBoot集成Axis2,部署webservice接口并调用 一.省略新建springboot项目过程 1.pom.xml 2.application.yml 3.准备工作做完,编写serv ...
- httpclient妙用一 httpclient作为客户端调用soap webservice(转)
前面有一篇使用HttpClient调用带参数的post接口方法,这里找到一篇使用HttpClient调用Soap协议接口的方式. 原文地址:httpclient妙用一 httpclient作为客户端调 ...
最新文章
- 计算机视觉开源库OpenCV形态学morphologyEx函数之开运算和闭运算
- 脑洞大开的插画师,每幅都戳到我诡异的笑点
- java对象的序列化和反序列化详细解释
- ServiceComb java-chassis和CSE java-chassis的区别
- Java 1-Java 基础语法
- 【路径规划】基于matlab A_star算法机器人走迷宫路径规划【含Matlab源码 1332期】
- 从云效1.0到2.0的升级,看技术如何驱动企业提效
- Day.js 是一个仅 2kb 大小的轻量级 JavaScript 时间日期处理库,和 Moment.js 的 API 设计保持完全一样,dayjs...
- Jenkins非常详细的教程四(钩子程序,定时构建实现)
- 黑金Xilinx FPGA学习笔记(一)verilogHDL扫盲文-(1)
- 【笔记】用python计算BS模型、隐波的笔记
- 桌面计算机图标管理打不开怎么回事,电脑桌面计算机图标打不开怎么办
- HMI-51-【多媒体】搞地图 1
- FIR窗函数和IIR模拟、数字滤波器的MATLAB实现
- 中国大学MOOC-陈越、何钦铭-数据结构-2022春期末考试
- [统计学理论基础] 方差 协方差 标准差
- 云主机安装redis
- Unity URP管线设置 后处理的使用
- 工程伦理第九章习题答案
- 【PdgCntEdit】书签的页码都是很大的正数,有没有办法把所有页码全部减去一个数??软件自带功能实现书签页码的增加减少增减书签页码