WebService
这几天一直在学习如何调用WebService。想写一个调用查询天气的WebService的Demo。 (天气查询WebService地址:http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?WSDL) 1,首先学习了CXF。在使用CXFbin下的wsdl2java命令生成java类时,报一个“...no found s:schema.....”的错误,经网上查询,是因为无法解析xml下的ref属性。解决方法网上有2种,第一个:删除<s:element ref="s:schema"/>,第二个:将<s:element ref="s:schema"/><s:any/>变为<s:any minOccurs="2" maxOccurs="2"/>。 以上2种方法,我都亲自测试过,都可以通过命令生成java类。 我在公司时,jdk为1.6,当时生成java类后,通过new 生成类,然后通过生成类的方法,就可以调用webservice的方法了。 可是回到家,再次测试竟然通不过了。我百思不得其解,重复操作,怎样都有问题。我将在公司做好的demo导入笔记本中,测试是通过的。所以我个人认为是否跟jdk版本有关系呢。 折腾到11点多,决定更换别的方法调用webService。 2,Axi2调用WebService。 通过Axi2bin下的命令,如下: wsdl2java -uri?http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?WSDL 直接生成java类,这里生成java类只有2个,跟cxf生成的不同。cxf生成了很多类。Axi2也会生成很多类,但是它把很多类都写成内部类了。所以外表看起来至生成了2个java文件。 将生成文件copy到对应包下,测试通过。一切ok (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |