环境配置:
springboot 1.5.14.RELEASE ,JDK1.8
项目目录结构:
无法上传
核心方法:
接口调用方法
/** * 数据上报 * @param config * @param datas * @return * @throws Exception */ public String report(ReportConfigVo config,byte [] datas) { String ret = null; try { if (null != config && !BlankUtil.isBlank(datas)) { // 创建动态客户端 JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); //http://192.168.1.75:8091/service/transfer?wsdl Client client = dcf.createClient(config.getUpUrl()); // 需要密码的情况需要加上用户名和密码 client.getOutInterceptors().add(new HeaderIntercepter(config.getDataCenterCode(), config.getValidatePwd())); // invoke("方法名",参数1,参数2,参数3....); 为接口中定义的方法名称 ,传递的参数,返回一个Object数组 Object[] objects = client.invoke("transfer", datas); ret = objects[0].toString(); log.info("返回结果:" + ret); } }catch (ServiceConstructionException e){ log.error("接口服务器连接异常!["+e.getMessage()+"]"); }catch (Exception er){ log.error("数据上报异常!["+er.getMessage()+"]"); } return ret; }
拦截器类:
HeaderIntercepter.java
import com.xxxxxx.report.security.MD5Util; import com.xxxxxx.report.utlis.Constant; import org.apache.cxf.binding.soap.SoapHeader; import org.apache.cxf.binding.soap.SoapMessage; import org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor; import org.apache.cxf.headers.Header; import org.apache.cxf.helpers.DOMUtils; import org.apache.cxf.interceptor.Fault; import org.apache.cxf.phase.AbstractPhaseInterceptor; import org.apache.cxf.phase.Phase; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import javax.xml.XMLConstants; import javax.xml.namespace.QName; import javax.xml.soap.*; import javax.xml.ws.handler.MessageContext; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Iterator; import java.util.List; /** * 自定义的soap拦截器-用来添加header信息 * Created by bluelotus on 2017/8/16. */ public class HeaderIntercepter extends AbstractSoapInterceptor { private String qname; private String username ; private String password ; public HeaderIntercepter() { super(Phase.WRITE); } public HeaderIntercepter(String userName,String password) { super(Phase.WRITE); this.username = userName; this.password = password; } public void handleMessage(SoapMessage soapMessage) throws Fault { Document doc=DOMUtils.createDocument(); // 根节点 Element rootEle=doc.createElementNS("", "AuthToken"); // 用户ID Element userEle = doc.createElement("username"); userEle.setTextContent(this.username); rootEle.appendChild(userEle); // 密码 Element passEle = doc.createElement("password"); passEle.setTextContent(MD5Util.md5(this.password)); rootEle.appendChild(passEle); // 添加到头 List<Header> headers = soapMessage.getHeaders(); QName qname=new QName("AuthToken"); SoapHeader head=new SoapHeader(qname, rootEle); headers.add(head); } private Object getHeader() { QName qName = new QName("", "", ""); Document document = DOMUtils.createDocument(); Element element = document.createElementNS(qname, "RequestSOAPHeader"); Element token = document.createElement("token"); token.setTextContent("kkkkk"); // element.appendChild(token); SoapHeader header = new SoapHeader(qName, token); return (header); } public String getQname() { return qname; } public void setQname(String qname) { this.qname = qname; } }
配置类:
/** * 配置信息 * Created by bluelotus on 2017/8/9. */ public class ReportConfigVo extends ReportConfig{ }
/** * 上报配置信息 * Created by bluelotus on 2017/8/9. */ public class ReportConfig { //数据中心编码 private String dataCenterCode; //上报接口网址 private String upUrl; //压缩包密码 private String compressPwd; //验证密码 private String validatePwd; }
MD5加密类:
/**
* Created by Administrator on 2017/6/28. */ public class MD5Util { private static final String encryModel="MD5"; /** * 32λmd5. * 32位小写md5加密 * @param str * @return */ public static String md5(String str) { return encrypt(encryModel, str); } public static String encrypt(String algorithm, String str) { try { MessageDigest md = MessageDigest.getInstance(algorithm); md.update(str.getBytes()); StringBuffer sb = new StringBuffer(); byte[] bytes = md.digest(); for (int i = 0; i < bytes.length; i++) { int b = bytes[i] & 0xFF; if (b < 0x10) { sb.append('0'); } sb.append(Integer.toHexString(b)); } return sb.toString(); } catch (Exception e) { return ""; } } }
相关推荐
SpringBoot+Mybatis+CXF框架,实现Restful api与 WebService api接口的大实验
springboot整合CXF发布webservice和客户端调用 项目中每个类都有详细的注释,保证都能看懂,不失为一个学习springboot整合cxf来学习webservice发布调用的好例子
springboot+webservice搭建webservice服务端及使用java客户端两种方式进行调用
springboot整合webservice采用CXF技术,springboot整合webservice采用CXF技术
最近项目中遇到需要去掉老系统的webservice服务中的insert方法,找了很久,发现这样最简单,实测有效!!!
搭的一个ssm框架,连接的是mysql,把doc里面的sql执行后可以直接运行。项目里面配置了easyui,weiservice,websocket,shiro验证,拦截器,定时器等等(用户名:admin或1,密码:admin或1)
springboot+webservice搭建webservice服务端及使用java客户端两种方式进行调用webservice接口
完整可用的spring整合CXF示例项目,包括服务发布端和调用端两个项目,包括CXF拦截器的实现的简单的授权校验
借鉴网上的资源,弄了一个SpringBoot开发WebService之Axis示例。
spring+xfire( 编写webservice完整配置+案例)
springboot2.0webService学习
这个附件里面包括一个完整的springboot 整合webservice的源代码,客户端和服务端运行起来是可以跑通的,并且附件里面放了两个说明文档,是如何通过idea来创建webservice的说明文档。希望对您有帮助。
在网上找了很久的资料,接口已经跟客户对接,特编写了代码文档和附带jar包,并含其他网站的参考地址,注意jdk环境要1.6或以上版本
客户端用springboot实现,服务端用webService+axis+mybatis实现 java期末大作业课程设计基于springboot的医院挂号预约系统源码+数据库。 软件架构说明 服务端:WebService+axis+mybatis 服务端开发环境:jdk8,...
springboot web services例子 web服务例子 springboot+cxf创建webservice的服务端和客户端
webservice是比较成熟的跨...文件中源代码纯属个人的项目实践,在springboot环境下集成cxf以实现webservice的服务端,通过soupui可以正常调用,仅供学习参考。PS:实现的webservice服务端的接口参数简单定义为了字符串
Springboot整合CXF发布Web service和客户端调用(用户和密码验证)打开及用
rest_demo.zip
采用Forest、Okhttp、HttpClient三种方式调用高德地图第三方API,简单易用
springboot 集成axis1.4的webservice,该为maven的工程