声明:该blog没有完全解决cxf访问webservice的问题。
访问电视台webservice的方式很多。前几天看到有人用cxf方式访问,但是未能实现。我今天测试了下,发现部分功能是可以用的,但是部分功能还是有问题的。
下载http://webservice.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?wsdl到本地,网页另存为后缀改为wsdl即可。
一、复制wsdl文件到cxf所在目录下的bin内。删除所有的<s:element ref="s:schema"/>节点。
二、打开命令行,进入bin目录
如上图所示。
编写测试类。依赖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); } }
响应结果如下:
这也许就是cxf的一个bug吧,可能在以后的cxf版本中会改进的。
ps:想通过cxf获取天气或者电视台的朋友们,还是换用别的方式,具体请参看另外的webservice访问方式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。