WebService

来源:互联网 发布:迅龙数据恢复 编辑:程序博客网 时间:2024/06/05 08:20

1、WebService

这里写图片描述
WebService可以跨平台的使用第三方的数据,根据WebService规范,无论使用什么语言(不同的后台,比如java,.net等)都可以实现数据交互或者集成。比如我们在做java网站的时候,想实现一个天气,或者快递查询的功能(它们的后台并不一定是java的,可以是各种语言),这样有了WebService就可以轻松实现获取数据。

比如说:有了WebService我们可以轻松的实现查询天所,手机号,股票,新闻,火车票等数据

2、java中的WebService

1、java中有三种WebService的实现:

  1. JAX-WS(JAX-RPC)
  2. AXM&SAAJ
  3. 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.1Accept: text/xml, multipart/relatedContent-Type: text/xml; charset=utf-8SOAPAction: "http://xxx/queryWeatherRequest"User-Agent: JAX-WS RI 2.2.8 svn-revision#13980Host: 127.0.0.1:4321Connection: keep-aliveContent-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 OKTransfer-encoding: chunkedContent-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());    }

运行结果:
这里写图片描述

通过上面简单的几步就可以调用天气接口,实现天气查询的功能

1 0