加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

关于cxf方式访问webservice的问题

发布时间:2020-12-16 23:56:21 所属栏目:安全 来源:网络整理
导读:声明:该blog没有完全解决cxf访问webservice的问题。 访问电视台webservice的方式很多。前几天看到有人用cxf方式访问,但是未能实现。我今天测试了下,发现部分功能是可以用的,但是部分功能还是有问题的。 下载http://webservice.webxml.com.cn/webservices

声明:该blog没有完全解决cxf访问webservice的问题。


访问电视台webservice的方式很多。前几天看到有人用cxf方式访问,但是未能实现。我今天测试了下,发现部分功能是可以用的,但是部分功能还是有问题的。


下载http://webservice.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?wsdl到本地,网页另存为后缀改为wsdl即可。


一、复制wsdl文件到cxf所在目录下的bin内。删除所有的<s:element?ref="s:schema"/>节点。


二、打开命令行,进入bin目录




输入以上,回车,发现当前文件夹内多了一个cn文件夹,复制到src目录下。




如上图所示。

编写测试类。依赖cxf相关jar包。


import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

import cn.com.webxml.ArrayOfString;
import cn.com.webxml.ChinaTVprogramWebServiceSoap;

public class Test {

	public static void main(String[] args) throws Exception {

		JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();
		factoryBean.getInInterceptors().add(new LoggingInInterceptor());
		factoryBean.getOutInterceptors().add(new LoggingOutInterceptor());
		factoryBean.setServiceClass(ChinaTVprogramWebServiceSoap.class);
		factoryBean
				.setAddress("http://webservice.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?wsdl");
		ChinaTVprogramWebServiceSoap impl = (ChinaTVprogramWebServiceSoap) factoryBean
				.create();
		ArrayOfString set = impl.getAreaString();
		System.out.println(impl.getAreaDataSet());
		System.out.println(impl.getTVprogramString(1,"","").getString());
		System.out.println(set);
	}

}


运行发现,不需要参数的,都可以打印出相关的数据,当时需要参数的却没有结果,这肯定是删除s:schema节点造成的。但奇怪的是,日志信息中却把对应的结果输出了。如下图:




响应结果如下:



这也许就是cxf的一个bug吧,可能在以后的cxf版本中会改进的。


ps:想通过cxf获取天气或者电视台的朋友们,还是换用别的方式,具体请参看另外的webservice访问方式。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读