我们首先要得到天气预报的webservice文档,天气预报的webservice接口是免费的
这个是webservcie的文档
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
然后我们按照第一篇蚊帐中的,测试一下wsdl文档能不能用,我们发现报错,当webservice是用.net写的,这个时候用java调用.net就会出问题
这是我们需要将对应的将wsdl的文件保存到本地,然后修改wsdl文件,这样方式来生成代码
上面的连接,在浏览器中右键,然后查看源文件,然后将得到的数据 粘贴我们的项目中
然后生成客户端代码
生成代码后,我们去wsdl文件中找到service name,我们利用这个类进行生成代码
这个类就是工厂类
然后我们测试
package com.weather_client.dw_day01;
import java.util.List;
import cn.com.webxml.ArrayOfString;
import cn.com.webxml.WeatherWebService;
import cn.com.webxml.WeatherWebServiceSoap;
public class test {
public static void main(String[] args) {
WeatherWebService weatherService = new WeatherWebService();
WeatherWebServiceSoap weatherWebServiceSoap = weatherService.getWeatherWebServiceSoap();
ArrayOfString weather = weatherWebServiceSoap.getWeatherbyCityName("济南");
List list = weather.getString();
System.out.println(list);
}
}
做手机归属地查询的同理
以上都是通过jdk来做webservice
下面我们通过用cxf来做webservice:
首先需要jar包去:http://cxf.apache.org/download.html 下载cxf的jar包,解压找到lib把lib下的所有的jar复制到项目中(注意:在lib下面有个文件不是jar包)然后对jar包进行编译
我们把第一篇文章中的service 代码copy一份,修改端口为8888,然后我们运行一下看是否正常
然后去查看wdsl文件
wsdl文档的格式:每个文件的格式都有下面这几个结构
types中定义约束,message中有请求的消息和发送的消息的结构
portType 是我们的接口,service是我们提供的服务也是对应的工厂,我们可以通过工厂得到对应的类
,bing是将我们服务和接口绑定。
下面我们建对应的客户端,将对应的wsdl文件放到客户端对应的项目中
然后我们利用wsdl文件生成对应的客户端代码,这次我们不用jdk的中的工具去生成客户端代码,我们用cxf来的批处理工具来生成代码,我们需要将对应的批处理文件,加入到环境变量中
然后再追加到path中
深入wsdl文档分析:
以上对应的发出的请求和回应
下面是message标签分析
下面是SEI的定义,即接口的定义
下面是SEI的具体实现
发布service
工厂类下面有很多入口(即很多的SEI的实现),SEI 下面是对应的是实现类
cxf的数据类型有哪些