一.webService平台简介
xml+xsd,wsdl, soap是构成webservice平台的三大技术。
1.webservice简介
webservice是采用http协议传输数据,采用xml格式封装数据(xml当中说明远程调用服务对象的哪个方法,参数是什么,返回值是什么)的一种技术。
2.soap简介
soap(simple object access protocal):简单对象访问协议,他是一种轻量级的,简单的,基于xml的协议,他被设计为在web上交换结构化与固话的信息。
webservice通过http协议发送请求与接受结果的时候,发送的请求内容与接受的结果内容都通过xml格式来封装,并增加了一些特定的http消息头,以说明http消息的内容格式,这些特定的http消息头与xml格式内容就是soap协议。
3.wsdl简介
wsdl(web service description language)是基于xml的语言,用于描述webservice及其函数,参数,返回值,他是webservice客户端与服务端都能理解的标准格式,由于是基于xml的,所以既是机器可阅读的也是人可以阅读的。
wsdl文档保存在web服务器上面,通过一个URL就可以访问到他们,客户端要调用一个webservice服务之前要先知道该服务的wsdl文档地址,webservice服务商可以通过2种方式来暴露他们的wsdl文档地址,
1. 注册到uddi服务器,以便其他人方便查看
2.直接告诉客户端调用者
二.http与soap
soap是webservice使用的一种协议,它是在http协议基础上做的另一种协议,它与http协议的区别是。http传输的内容是HTML格式,soap传输的内容是xml格式的。
三.wsdl文档解析
wsdl:webservice描述文档
解析方式:从下而上
哈尔冰天气的wsdl文档
service:服务访问点的集合元素,元素的name属性很重要,调用时需要使用
port:服务访问点元素的name属性调用时需要使用, binding属性指定了服务访问点和服务类绑定元素
binding:把服务访问点和服务类绑定在一起,不需要关系元素的内部,要关心的就是他的type属性,这个属性指定了绑定的服务类xml元素(portType)
portType:具体的服务类 的元素,在portType内部有n个operation,这些operation在生成java代码的时候都会转为服务访问点所绑定类的方法,在客户端可以调用这些方法(operation),
message:输入输出消息体,分别对应服务端接收的参数与返回值,而消息的传输使用的是soap协议,他的请求体是xml格式的,这个xml文件是后约束的,对它的约束都在 types里面
约束
四.wsdl生成java代码
如何调用webservice服务端:
webservice实际上是通过网络根据soap协议来传输数据,我们不用自己去组装数据,当然我们也可以自己去组装消息体。
生成java代码步奏:
(1)创建一个空文件夹,打开控制台,切换至该文件夹
(2)wsimport:
参数:-s:生成源代码
-p: 生成代码之后的包名
wsimport -s . -p com.csii.stub http://192.168.15.82:8099/hello?wsdl
(3)把代码拷贝到客户端的工程中
(4)客户端的调用
//1.创建服务访问点的name对象
WeatherWS ww=new WeatherWS();
//2.获得服务访问点绑定的类,使用get+port的名字(WeatherWSSoap),getWeatherWSSoap
WeatherWSSoap wws=ww.getWeatherWSSoap();
//3.调用服务端的方法(服务端访问点所绑定的类方法)
ArrayOfString result=wws.getWeather("3114", null);
List
for(String str:list) {
System.out.println(str);
}