<!-- /* 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>