1、WebService
WebService可以跨平台的使用第三方的数据,根据WebService规范,无论使用什么语言(不同的后台,比如java,.net等)都可以实现数据交互或者集成。比如我们在做java网站的时候,想实现一个天气,或者快递查询的功能(它们的后台并不一定是java的,可以是各种语言),这样有了WebService就可以轻松实现获取数据。
比如说:有了WebService我们可以轻松的实现查询天所,手机号,股票,新闻,火车票等数据
2、java中的WebService
1、java中有三种WebService的实现:
- JAX-WS(JAX-RPC)
- AXM&SAAJ
- AX-RS
从java5开始支持JAX-WS2.0,jdk1.7支持JAX-WS2.2版本
因此使用java开发WebService非常方便
3、WebService三要素
WebService三要素:SOAP,WSDL,UDDI
SOAP:描述传递信息的格式
WSDL:用来描述如何访问具体接口
UDDI:用来管理,分发,查询WebService
1、WSDL
WSDL是(Web Service Description Language)用于描述WebService函数,参数和返回值
WSDL基于XML,以此便于阅读
如何查看WSDL:
在地址后面加上?wsdl即可查看wsdl,在java中可用wsimport生成java代码
根据service查找 port name和binding
然后查找方法,输入参数,转出值
2、SOAP
SOAP(Simple Object Access Protocol)是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。
1、SOAP封装:它定义一个框架,描述消息中的内容是什么,是谁发送的,谁接收处理
2、SOAP编码规则:表示数据类型的实例
3、SOAP RPC:它定义一个协定,用于表示远程过程调用和应答
4、SOAP绑定:它定义SOAP使用哪个 协议交换信息
SOAP 是一种网络通信协议
SOAP即Simple Object Access Protocol简易对象访问协议
SOAP 用于跨平台应用程序之间的通信
SOAP 被设计用来通过因特网(http)进行通信
SOAP = HTTP+XML,其实就是通过HTTP发xml数据
SOAP 很简单并可扩展支持面向对象
SOAP 允许您跨越防火墙
SOAP 将被作为 W3C 标准来发展
SOAP请求是在http中
POST /weather HTTP/1.1
Accept: text/xml, multipart/related
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://xxx/queryWeatherRequest"
User-Agent: JAX-WS RI 2.2.8 svn-revision#13980
Host: 127.0.0.1:4321
Connection: keep-alive
Content-Length: 232
<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:queryWeather xmlns:ns2="http://xxxxx/">
<arg0>北京</arg0>
</ns2:queryWeather>
</S:Body>
</S:Envelope>
响应
HTTP/1.1 200 OK
Transfer-encoding: chunked
Content-type: text/xml; charset=utf-8
<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:queryWeatherResponse xmlns:ns2="http://xxx/">
<return>天气晴朗</return>
</ns2:queryWeatherResponse>
</S:Body>
</S:Envelope>
3、UDDI
UDDI(Universal Description Discovery and Integration)企业可以通过它对Web Service进行注册和搜索。
4、使用
1、http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
2、根据WeatherWebService.wsdl生成java代码
在命令行中
进行到工作空间后用 wsimport -s .文件目录
然后生成代码如下:
3、调用webservice代码
public static void main(String[] args) throws MalformedURLException {
// 创建服务视图
Service service = Service
.create(new URL(
"http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl"),
new QName("http://WebXml.com.cn/", "WeatherWebService"));
// 获得PortType
WeatherWebServiceSoap portType = service
.getPort(WeatherWebServiceSoap.class);
// 调用服务端
ArrayOfString result = portType.getWeatherbyCityName("北京");
System.out.println(result.getString());
}
运行结果:
通过上面简单的几步就可以调用天气接口,实现天气查询的功能