MSXML中提供了Microsoft.XMLHTTP對象,能夠完成從資料包到Request對象的轉換以及發送任務。 建立XMLHTTP對象的語句如下: Set objXML = createObject(Msxml2.XMLHTTP) 或 Set objXML = createObject("Microsoft.XMLHTTP") ' Or, for version 3.0 of XMLHTTP, use: ' Set xml = Server.createObject(MSXML2.ServerXMLHTTP) 對象建立後調用Open方法對Request對象進行初始化,文法格式為: poster.open http-method, url, async, userID, password Open方法中包含了5個參數,前三個是必要的,後兩個是可選的(在伺服器需要進行身分識別驗證時提供)。參數的含義如下所示: http-method: HTTP的通訊方式,比如GET或是 POST url: 接收XML資料的伺服器的URL地址。通常在URL中要指明 ASP或CGI程式 async: 一個布爾標識,說明請求是否為非同步。如果是非同步通訊方式(true),客戶機就不等待伺服器的響應;如果是同步方式(false),客戶機就要等到伺服器返回訊息後才去執行其他動作 userID 使用者ID,用於伺服器身分識別驗證 password 使用者密碼,用於伺服器身分識別驗證 XMLHTTP對象的Send方法 用Open方法對Request對象進行初始化後,調用Send方法發送XML資料: poster.send XML-data Send方法的參數類型是Variant,可以是字串、DOM樹或任意資料流。發送資料的方式分為同步和非同步兩種。在非同步方式下,資料包一旦發送完畢,就結束Send進程,客戶機執行其他的操作;而在同步方式下,客戶機要等到伺服器返回確認訊息後才結束Send進程。 XMLHTTP對象中的readyState屬效能夠反映出伺服器在處理請求時的進展狀況。客戶機的程式可以根據這個狀態資訊設定相應的事件處理方法。屬性值及其含義如下表所示: 值 說明 0 Response對象已經建立,但XML文檔上傳過程尚未結束 1 XML文檔已經裝載完畢 2 XML文檔已經裝載完畢,正在處理中 3 部分XML文檔已經解析 4 文檔已經解析完畢,用戶端可以接受返回訊息 客戶機處理響應資訊 客戶機接收到返回訊息後,進行簡單的處理,基本上就完成了C/S之間的一個互動周期。客戶機接收響應是通過XMLHTTP對象的屬性實現的: ● responseTxt:將返回訊息作為文本字串; ● responseXML:將返回訊息視為XML文檔,在伺服器響應訊息中含有XML資料時使用; ● responseStream:將返回訊息視為Stream對象。 AspHTTP組件的屬性 Accept 指示什麼樣的MIME類型可以被請求程式接受 例如: HttpObj.Accept = "*/*" Authorization 授權頭可以讓你獲得 需要驗證身份的地方的url 使用者名稱和口令之間用冒號點開 例如: HttpObj.Authorization = "jimb:superbmr" BinaryData 返回來自getURl請求獲得的兩進位格式的資料,你可以用這個屬性取得兩進位資料 如來自另一個web伺服器的圖片例如: <% Response.ContentType = "image/gif" Set HTTPObj = Server.createObject("AspHTTP.Conn") HTTPObj.Url = "/blog/upload/200562215730899.gif" HTTPObj.GetURL Response.BinaryWrite HTTPObj.BinaryData %> ContentType 這個屬性允許你在POST***作時自訂content-type頭 例如: ContentType = "application/x-www-form-urlencoded" Error 報告請求中發生的任何錯誤 FollowRedirects FollowRedirects告訴組件跟隨HTTP Server的重新導向 例如: HttpObj.FollowRedirects = true Headers Headers屬性包含了在請求被調用GetURL處理完成之後,來自http請求的回應頭 例如: Response.Write HttpObj.Headers Port Port屬性指示串連http伺服器的連接埠號碼 例如: HttpObj.Port = 80 PostData PostData屬性應該被設定為你希望post請求POST到web伺服器的資料的值 例如: HttpObj.PostData = "suid=jimb&act=upd" Protocol 指示請求應該使用的http協議版本號碼,預設值是HTTP/1.0 例如: HttpObj.Protocol = "HTTP/1.1" Proxy proxy屬性包含proxy serverProxy 伺服器的地址/連接埠,冒號點開 例如: HttpObj.Proxy = "address.net:2001" ProxyPassword 設定需要驗證的httpProxy 伺服器的http代理密碼,現在只支援basic authentication(基本驗證) RequestMethod RequestMethod屬性指示發給伺服器http請求的類型,合法的值是"GET", "POST" 和 "HEAD". 例如: HttpObj.RequestMethod = "POST" RegisteredUser RegisteredUser屬性指示組件授權使用者的名字 例如: Response.Write "This component is licensed to " & HttpObj.RegisteredUser Response Response屬性包含在收到web伺服器過來的請求之後的http response回應 SaveFileTo SaveFileTo允許你得到任何類型的檔案,自動存到本地碟上。圖形/文本/HTML檔案均可以。 例如: HttpObj.SaveFileTo = "c:\images\3rdqrtr.jpg" TimeOut timeout屬性決定組件等待http server響應的時間 例如: HttpObj.TimeOut = 45 URL URL屬性設定你希望request請求所***作的url,以http://開頭 例如: HttpObj.URL = "http://www.myfinancial.com/scripts/update3.asp" UserAgent UserAgent讓組件通過發送一個request的UserAgent頭偽裝瀏覽器 例如: HttpObj.UserAgent = "Mozilla Compatible (MS IE 3.01 WinNT)" Version 指示AspHTTP組件的版本 例如: Response.Write "The component version is " & HttpObj.Version AspHTTP組件的方法 方法 參數 傳回值 描述 GetURL 無 String 返回http請求的響應,這是一個字串,組件不支援2進位傳回值,如Gif/Jpg映像 AddExtraHeader String 無 在請求內增加一個自訂的http頭,自訂頭可以包括類比的瀏覽器頭,例如IE的解析度資訊頭 ClearExtraHeaders 無 無 清除所有AddExtraHeader設定的http頭 GetHeader String String 在GetUrl調用之後,獲得自定頭的值,如果有多個頭,返回第一個。要檢索所有的頭,請看GetHeaders Example: strCookie = HttpObj.GetHeader("Set-Cookie") You could then on subsequent calls return the same cookie as follows: if strCookie <> "" then HttpObj.AddExtraHeader "Cookie: " & strCookie end if GetHREFs 無 Variant 字串數組,在調用GetUrl之後,你可以調用GetHREFs處理html裡面的<a href=""> Tags. GetHREFs返回一個你可以進一步處理或顯示的字串的可變數組 請見HREFList.asp(下載包內有)使用這個方法的範例程式碼,GetHREFs是在aspHTTP版本2.4增加的。 URLDecode strValue String 解碼一個URL編碼的字串 URLEncode strValue String 將一個字串編碼成一個合法的url值 Example: HttpObj.URL = HttpObj.URLEncode("http://www.test_xyz.com?avalue=this is a value with spaces") |