HTTP SOAP WSDL

本文详细介绍了HTTP协议的基础概念、工作方式及内部操作过程。探讨了HTTP如何实现从服务器传输超文本到浏览器的过程,同时对比了HTTP与其他协议的区别。

<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"Comic Sans MS"; panose-1:3 15 7 2 3 3 2 2 2 4; mso-font-charset:0; mso-generic-font-family:script; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体;} h2 {mso-margin-top-alt:auto; margin-right:0in; mso-margin-bottom-alt:auto; margin-left:0in; mso-pagination:widow-orphan; mso-outline-level:2; font-size:18.0pt; font-family:"Times New Roman"; font-weight:bold;} a:link, span.MsoHyperlink {color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:purple; text-decoration:underline; text-underline:single;} p {mso-margin-top-alt:auto; margin-right:0in; mso-margin-bottom-alt:auto; margin-left:0in; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体;} pre {margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; font-size:10.0pt; font-family:"Courier New"; mso-fareast-font-family:宋体;} @page Section1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} -->

HTTP

HTTP 是一种常用的超文本网络通信协议 , 是用于从 WWW 服务器传输超文本到本地浏览器的传送协议。 HTTP 协议是高于传输层 TCP 协议的应用层协议。 HTTP 协议不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示 ( 如文本先于图形 ) 等。这就是你为什么在浏览器中看到的网页地址都是以 “http://” 开头的原因。

 

HTTP 协议 - 什么是 HTTP 协议

   HTTP 协议( Hypertext Transfer Protocol ,超文本传输协议)是用于从 WWW 服务器传输超文本到本地浏览器的传送协议。当你在浏览器的地址框中输入一个 URL 或是单击一个超级链接时, URL 就确定了要浏览的地 址。浏览器通过超文本传输协议 (HTTP) ,将 Web 服务器上站点的网页代码提取出来,并翻译成漂亮的网页。因此,在我们认识 HTTP 之前,有必要先弄清 URL 的组成 , 例如: http://www.mbalib.com/china/index.htm 它的含义如下:

   1.http:// :代表超文本传输协议,通知 microsoft.com 服务器显示 Web 页,通常不用输入;

   2.www :代表一个 Web( 万维网 ) 服务器;

   3.mbalib.com/ :这是装有网页的服务器的域名,或站点服务器的名称;

   4.China/ :为该服务器上的子目录,就好像我们的文件夹;

   5.Index.htm: 是文件夹中的一个 HTML 文件 ( 网页 )

   Internet 的基本协议是 TCP/IP 协议,然而在 TCP/IP 模型最上层的是应用层 (Applicationlayer) ,它包 含所有高层的协议。高层协议有:文件传输协议 FTP 、电子邮件传输协议 SMTP 、域名系统服务 DNS 、网络新闻传输协议 NNTP HTTP 协议等。

   HTTP 协议不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示 ( 如文本先于图形 ) 等。这就是你为什么在浏览器中看到的网页地址都是以 “http://” 开头的原因。

  自 WWW 诞生以来,一个多姿多彩的资讯和虚拟的世界便出现在我们眼前,可是我们怎么能够更加容易地找到我们需要的资讯呢?当决定使用超 文本作为 WWW 文档的标准格式后,于是在 1990 年,科学家们立即制定了能够快速查找这些超文本文档的协议,即 HTTP 协议。经过几年的使用与发展,得到 不断的完善和扩展,目前在 WWW 中使用的是 HTTP/1.0 的第六版。

HTTP 协议 - HTTP 协议的工作方式

  由于 HTTP 协议是基于请求 / 响应范式的 ( 相当于客户机 / 服务器 ) 。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为: 统一资源标识符 (URL) 、协议版本号,后边是 MIME 信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一 个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是 MIME 信息包括服务器信息、实体信息和可能的内容。

  许多 HTTP 通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理和服务器之间通过一 个单独的连接来完成。在 Internet 上, HTTP 通讯通常发生在 TCP/IP 连接之上。缺省端口是 TCP80 ,但其它的端口也是可用的。但这并不预示着 HTTP 协议在 Internet 或其它网络 的其它协议之上才能完成。 HTTP 只预示着一个可靠的传输。

  这个过程就好像我们打电话订货一样,我们可以打电话给商家,告诉他我们需要什么规格的商品,然后商家再告诉我们什么商品有货,什么商品缺货。这些,我们是通过电话线用电话联系 (HTTP 是通过 TCP/IP) ,当然我们也可以通过传真,只要商家那边也有传真。

HTTP 协议 - HTTP 协议的内部操作过程

  在 WWW 中, 客户 服务器 是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。基于 HTTP 协议的客户 / 服务器模式的信息交换过程,它分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。这就好像上面的例子,我们电话订货的全 过程。

  其实简单说就是任何服务器除了包括 HTML 文件以外,还有一个 HTTP 驻留程序,用于响应用户请求。你的浏览器是 HTTP 客户,向服务 器发送请求,当浏览器中输入了一个开始文件或点击了一个超级链接时,浏览器就向服务器发送了 HTTP 请求,此请求被送往由 IP 地址指定的 URL 。驻留程序 接收到请求,在进行必要的操作后回送所要求的文件。在这一过程中,在网络上发送和接收的数据已经被分成一个或多个数据包 (packet) ,每个数据包包 括:要传送的数据;控制信息,即告诉网络怎样处理数据包。 TCP/IP 决定了每个数据包的格式。如果事先不告诉你,你可能不会知道信息被分成用于传输和再 重新组合起来的许多小块。

  也就是说商家除了拥有商品之外,它也有一个职员在接听你的电话,当你打电话的时候,你的声音转换成各种复杂的数据,通过电话线传输到对 方的电话机,对方的电话机又把各种复杂的数据转换成声音,使得对方商家的职员能够明白你的请求。这个过程你不需要明白声音是怎么转换成复杂的数据的。

SOAP

       
SOAP
可以在
web
上交换结构化的消息,以便在不同的
application
之间传输数据而生的,它的编码格式是
XML
,不受任何网络协议的限制,常利用
HTTP
协议进行传输。可以说
HTTP

SOAP
消息的载体。它还支持从消息系统到远程过程
RPC
等大量的应用程序。

 
例子:通过
http
发送
soap message

SoapTest
是要调用的方法
:
url = "http://xxxx.xxxx.xxx

"
SoapRequest
="<?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
>
<SoapTest
 xmlns="
此处是你所使用的方法的命名空间
">
<Username>lingye</Username>
<PassWord>lingye</PassWord>
</SoapTest
>
</soap:Body
>
</soap:Envelope
>
Set xmlhttp = server.CreateObject("Msxml2.XMLHTTP")
xmlhttp.Open "POST",url,false
xmlhttp.setRequestHeader "Content-Type", "text/xml;charset=utf-8"
xmlhttp.setRequestHeader "HOST","127.0.0.1"
xmlhttp.setRequestHeader "Content-Length",LEN(SoapRequest)
xmlhttp.setRequestHeader "SOAPAction", url
xmlhttp.Send(SoapRequest)
Response.Write xmlhttp.responseText
Set xmlhttp = Nothing%>

WSDL

WSDL 是一种基于 XML 格式的文件,描述了 web service 的对象、方法 (port type) 、数据 (message) 和通信协议 (binding) 。它指定要访问 service 地址,即 endpoint; 方法即是 application 中暴露的函数接口;数据即是这些函数用到的 input output 函数。在多数 webservice 测试工具中, soap 消息 , endpoint 都是根据 WSDL 生成的。

WSDL 文档是利用这些主要的元素来描述某个 web service 的:

元素

定义

<portType>

web service 执行的操作

<message>

web service 使用的消息

<types>

web service 使用的数据类型

<binding>

定义某个操作的 web service 使用的通信协议

我们打开 SOA composite wsdl 文件地址 http://gdcvmg_avaya17:8001/soa-infra/services/cathy/POPCATHY/recievePO?WSDL

可以看到这个 application wsdl 文件:

 

<wsdl:definitions name="recievePO" targetNamespace="http://oracle.com/sca/soapservice/POPprocess_Cathy/POPCATHY/recievePO">   ---endpoint

<wsdl:documentation>

<abstractWSDL>

http://gdcvmg_avaya17:8001/soa-infra/services/cathy/POPCATHY!4.0/recievePO.wsdl

</abstractWSDL>

</wsdl:documentation>

 

<wsdl:types>   -- schema 中定义了数据类型 PurchaseOrder

<schema>

<import namespace="http://xmlns.oracle.com/ns/order" schemaLocation="http://:8001/soa-infra/services/cathy/POPCATHY/recievePO?XSD=xsd/po.xsd"/>

</schema>

</wsdl:types>

 

<wsdl:message name="requestMessage"> -- 参数变量,定义了一个 PurchaseOrder 类型的参数 requestMessage

<wsdl:part name="request" element="inp1:PurchaseOrder"/>

</wsdl:message>

 

<wsdl:portType name="execute_ptt"> -- 方法函数,定义输入参数

<wsdl:operation name="execute">

<wsdl:input message="tns:requestMessage"/>

</wsdl:operation>

</wsdl:portType>

 

<wsdl:binding name="execute_pttBinding" type="tns:execute_ptt">

    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>

    <wsdl:operation name="execute">

        <soap:operation style="document" soapAction="execute"/>

        <wsdl:input>

            <soap:body use="literal"    namespace="http://oracle.com/sca/soapservice/POPprocess_Cathy/POPCATHY/recievePO"/>

         < /wsdl:input>

     </wsdl:operation>

</wsdl:binding>

-- 定义一个 operation 的绑定协议

<wsdl:service name="recievePO">

<wsdl:port name="execute_pt" binding="tns:execute_pttBinding">

<soap:address location="http://:8001/soa-infra/services/cathy/POPCATHY/recievePO"/>

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值