这几天一直在学习如何调用WebService。想写一个调用查询天气的WebService的Demo。
(天气查询WebService地址:http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?WSDL)
1,首先学习了CXF。在使用CXF\bin下的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版本有关系呢。
2,Axi2调用WebService。
通过Axi2\bin下的命令,如下:
wsdl2java -uri http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?WSDL
直接生成java类,这里生成java类只有2个,跟cxf生成的不同。cxf生成了很多类。Axi2也会生成很多类,但是它把很多类都写成内部类了。所以外表看起来至生成了2个java文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。