Browse Month

七月 2016

使用wsdl2java工具生成天气预报客户端

1.环境和工具的准备。java环境阿帕奇cxf工具这两个身为开发的你肯定都有

2.在doc窗口找到阿帕奇cxf工具的bin目录。执行wsdl2java -frontend jaxws21 -d  代码生成路径 空格 wsdl文件地址 例如wsdl2java -frontend jaxws21 -d  C:\Users\jason\workspace\weatherReport\src e:\\WeatherWebService.wsdl生成的时候你会发现如果后面的wsdl地址你使用http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl来生成的时候会报错:undefined element declaration ‘s:schema’这是因为java中不支持这种写法。有的人说是因为这个wsdl服务器是.net的所以有不兼容的情况。算得上是一个bug吧。解决办法是将wsdl保存到本地,然后将所有的这种写法的标签删除或者用等价值替代。这样就可以生成了。

3.生成之后代码的使用

可以直接声明一个WeatherWebService 类来调用服务器端的方法获取天气。例如

WeatherWebService wws=new WeatherWebService();
ArrayOfString wwsr=wws.getWeatherWebServiceSoap().getWeatherbyCityName(“城市名称”);

当然里面不止这一种方法。你可以自己再研究

4.补充,如果到这里你出现No namespace on “html” element. You must send a SOAP request.的情况的话那么。很可能是你项目中引入了cxf的某些jar包导致的冲突的情况。具体什么类的冲突我还需要再进行研究。如果你出现了。可以删除引用的jar包即可解决。

在ajax中进行变量赋值取不到的原因

首先要知道一个事实,ajax存在一个令人惊喜的的地方就是ajax可以异步的处理请求。默认不写ajax请求方式的情况下是进行异步处理的方式。ajax对变量赋值取不到的情况正式因为这个特性。在ajax与后台交互的时候js中的代码可能早已经执行完成了。那么既然知道了原因所在,解决办法大家想必已经知道了。那就是给ajax配置为非异步的方式进行处理交互动作。