如果是要编写服务端代码,参见文章: 服务端
生成客户端代码
- 首先下载CXF的压缩包:apache-cxf-3.3.3.zip ,然后直接解压就可以了。
- 配置环境变量:
首先,在环境变量中增加如下变量:
然后添加到Path变量中:
- 生成客户端代码:
wsdl2java -d F:\fyk-plat\fyk-business\fyk-business-ws\fyk-business-cxf\src\main\java -p com.boco.fyk.cxf.cxfclient.qqonline -encoding utf-8 http://ws.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl
这里,需要说明的是:
- -p 指定其wsdl的命名空间,也就是要生成代码的包名:
- -d 指定要产生代码所在目录
- -client 生成客户端测试web service的代码
- -server 生成服务器启动web service的代码
- -impl 生成web service的实现代码
- -ant 生成build.xml文件
在这个命令中,如果包名不存在,则会创建,如果已经存在,则沿用。当然,也可以加上-client参数,这样就会生成一些测试代码,这个在本文不使用,之后再来写这个测试代码。
如果出现错误的解决方式:
由于 accessExternalSchema 属性设置的限制而不允许 ‘file’ 访问, 因此无法读取方案文档 ‘xjc.xsd’。
引入jar包
这里只给出了CXF先关的jar包,项目中的其他jar依赖略。
<!-- cxf start -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>${cxf-spring-boot-starter-jaxws.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-features-logging</artifactId>
<version>3.3.1</version>
</dependency>
<!-- cxf end -->
调用服务
public String qqCheckOnline(String qqCode) throws Exception {
QqOnlineWebService service = new QqOnlineWebService(new URL(getUrl()));
QqOnlineWebServiceSoap qqOnlineWebServiceSoap = service.getQqOnlineWebServiceSoap();
return qqOnlineWebServiceSoap.qqCheckOnline(qqCode);
}
这里,getUrl()方法返回的是一个字符串:
protected String getUrl() {
return "http://ws.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl";
}
在实际之中,这里的值可以是来自配置文件、数据库等其他的方式,视情况而定。
另外,调用服务的方式,也有很多种,这里介绍的只是其中一种。只是我个人觉得比较适合当前的web项目罢了。
出入站报文获取
通常情况下,在调用接口的时候,都会把报文保存下来,方便后续查问题。报文的获取,可以参考这个文章:CXF获取出入站报文