初识Web Service

 
 

Web Service

Web服务是一种跨编程语言和跨平台的远程调用技术,就是通过网络调用其他网站的资源。

Web Service 技术

1、SOAP

Simple Object Access Protocol,简单对象访问协议,是在分散和分布式的环境中交换信息的简单协议,基于XML。

下面看一个SOAP请求和响应示例

(WeatherWebService.asmx中的getSupportCity方法,传入byProvinceName,返回getSupportCityResult):

请求:

POST /WebServices/WeatherWebService.asmx HTTP/1.1

Host: www.webxml.com.cn

Content-Type: text/xml; charset=utf-8

Content-Length: length

SOAPAction: "http://WebXml.com.cn/getSupportCity"

 

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

  <soap:Body>

    <getSupportCity xmlns="http://WebXml.com.cn/">

      <byProvinceName>string</byProvinceName>

    </getSupportCity>

  </soap:Body>

</soap:Envelope>

响应:

HTTP/1.1 200 OK

Content-Type: text/xml; charset=utf-8

Content-Length: length

 

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

  <soap:Body>

    <getSupportCityResponse xmlns="http://WebXml.com.cn/">

      <getSupportCityResult>

        <string>string</string>

        <string>string</string>

      </getSupportCityResult>

    </getSupportCityResponse>

  </soap:Body>

</soap:Envelope>

 

从上面可以得到如下信息:

SOAP是基于HTTP协议的,在发送和返回的SOAP中都包含HTTP的发送和返回信息;

SOAP是基于XML的;

SOAP由以下部分组成:

         Envelop:必须,把此XML文档标识为一条SOAP信息,SOAP 消息必须拥有与命名空间 "http://www.w3.org/2001/12/soap-envelope" 相关联的一个 Envelope 元素。

         Header:可选, SOAP Header 元素可包含有关 SOAP 消息的应用程序专用信息(比如认证、支付等)。如果 Header 元素被提供,则它必须是 Envelope 元素的第一个子元素。

         Body:包含要调用的方法和方法的参数

<getSupportCity xmlns="http://WebXml.com.cn/">

      <byProvinceName>string</byProvinceName>

</getSupportCity>

Fault:可选, SOAP Fault 元素用于指示错误消息,在Body元素中。

如果存在异常,则在返回的SOAP信息中加入SOAP Fault 元素:

<soap:Body>

<soap:Fault>

<faultcode xmlns:q0="ns=cnblogs.com/tyb1222">q0:code</faultcode>

<faultstring>System.Web.Services.Protocols.SoapException: 0x00</faultstring>

<faultactor/>

<detail />

</soap:Fault>

</soap:Body>

Web Service调用过程

客户端通过WSDL文件的URI地址,创建底层的代理类,调用这些代理,访问WSDL定义的Web Service。

客户端将客户端的调用方法变成SOAP格式的通过HTTP协议发送出去。

服务端接收客户端发送的SOAP数据,服务端解析数据(SOAP是固定的协议),然后知道要调用那个类的那个方法,然后执行方法,并把方法返回的结果变成SOAP格式的数据,通过HTTP协议返回至客户端。

客户端接收SOAP数据,解析出返回结果。

 

Web Service服务端开发有.NET和Java EE两个平台,这个后面详述。

Web Service客户端调用别人或自己发布的Web Service,如天气预报服务等。

常用Web Service汇总(天气预报、时刻表等): http://developer.51cto.com/art/200908/147125.htm

 

2、WSDL

Web Service Description Language,是一个用来描述WEB服务和说明如何与WEB服务进行通讯的XML语言。为用户提供详细的接口说明书。

WSDL仅仅是一个简单的XML文档,他包含一系列描述WEB服务的定义。

WSDL文档结构

<types>

web service 使用的数据类型

表示当前的WSDL中用到的所有数据类型,为了更大程度的保持中立性,使用XML Scheme语言定义数据类型。

包含了Web服务中方法的参数的数据类型和返回值的数据类型。

 

 

 

<message>

web service 使用的消息

定义了Web服务的方法的参数,每一个part表示一个参数,输入参数和输出参数各自定义。

类型对用于< types >中的定义类型。

 

 

<portType>

web service 执行的操作

 

<portType> 元素是最重要的 WSDL 元素。描述一个Web Service。可被执行的操作、以及相关的类。

 

Name属性表示类。

Operation表示表示Web服务方法。

Input是方法的输入参数,它引用<message >标签中的输入参数,output是方法的返回值,它引用<message >标签中的输出参数。

 

<binding>

web service 使用的通信协议

<binding>标签是完整描述协议、序列化和编码的地方,<types>,<message>和<portType>标签处理抽象的数据内容,而<binding>标签是处理数据传输的物理实现。

<binding>标签把前三部分的抽象定义具体化。

 

<service >

 

service是一套<port>元素。在一一对应形式下,每个<port>元素都和一个location关联。如果同一个<binding>有多个<port>元素与之关联,可以使用额外的URL地址作为替换。

 

 

转载于:https://www.cnblogs.com/The-SEA/p/4388459.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值