热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java对接webservice接口

xml格式的接口文档,看的我头大,然后发现cxf这个工具,总算是解决了一些问题。下载cxf解压好之后去bin目录下,打开cm

xml格式的接口文档,看的我头大,然后发现cxf这个工具,总算是解决了一些问题。
下载cxf
在这里插入图片描述
解压好之后去bin目录下,打开cmd窗口
使用wdsl地址生成所有我们可能用得上的东西,一句命令即可:

wsdl2java -d D:/src -all wsdl地址

稍等一下,我们就可以在我们刚指定的目录下看到生成的所有文件了
在这里插入图片描述
这里的Client就是我们要用来调用接口的类了
在这里插入图片描述
打开来看里面已经生成了测试代码,我们只需要进行稍加修改即可使用,因为我这边有验证所以需要在header中添加认证,别的可能是用户名密码什么的,大致都差不多,我这里就是一个密匙。这里添加密匙需要一个拦截器来实现添加头部认证的,这里我们要在maven中添加相关的依赖

<dependency><groupId>org.apache.cxfgroupId><artifactId>cxf-rt-frontend-jaxwsartifactId><version>3.4.2version>dependency><dependency><groupId>org.apache.cxfgroupId><artifactId>cxf-rt-transports-httpartifactId><version>3.4.2version>dependency>

import org.apache.cxf.binding.soap.SoapMessage;
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 javax.xml.namespace.QName;
import java.util.List;public class ClientAuthInterceptor extends AbstractPhaseInterceptor<SoapMessage> {private static final String PASSWORD = "";public ClientAuthInterceptor() {//准备发送阶段super(Phase.PREPARE_SEND);}public void handleMessage(SoapMessage message) throws Fault {List<Header> headers = message.getHeaders();Document doc = DOMUtils.createDocument();Element auth = doc.createElement("Security");auth.setTextContent(PASSWORD);headers.add(new Header(new QName(""), auth));}
}

这边实现了拦截器,我们还需要把拦截器添加到Client,也就是这两行代码
在这里插入图片描述
然后我们启动Client就可以看到可以正常访问接口了


推荐阅读
author-avatar
言_信者
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有