Microsoft.XMLHttp組件的屬性方法
一、使用步驟:
1、建立XMLHTTP對象 //需MSXML4.0支援
2、開啟與服務端的串連,同時定義指令發送方式,服務網頁(URL)和請求許可權等。用戶端通過Open命令開啟與服務端的服務網頁的串連。與普
通HTTP指令傳送一樣,可以用"GET"方法或"POST"方法指向服務端的服務網頁。
3、發送指令。
4、等待並接收服務端返回的處理結果。
5、釋放XMLHTTP對象
二、XMLHTTP方法:
Open( bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword )
bstrMethod: 資料傳送方式,即GET或POST。
bstrUrl: 服務網頁的URL。
varAsync: 是否同步執行。預設為True,即同步執行,但只能在DOM中實施同步執行。用中一般將其置為true,即非同步執行。
bstrUser: 使用者名稱,可省略。
bstrPassword:使用者口令,可省略。
Send( varBody )
varBody:指令集。可以是XML格式資料,也可以是字串,流,或者一個不帶正負號的整數數組。也可以省略,讓指令通過Open方法的URL參數代入。
setRequestHeader( bstrHeader, bstrvalue )
bstrHeader:HTTP 頭(header)
bstrvalue: HTTP 頭(header)的值
如果Open方法定義為POST,可以定義表單方式上傳:
xmlhttp.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded")
三、XMLHTTP屬性:
onreadystatechange:在同步執行方式下獲得返回結果的事件控制代碼。只能在DOM中調用。
responseBody: 結果返回為不帶正負號的整數數組。
responseStream: 結果返回為IStream流。
responseText : 結果返回為字串。
responseXML: 結果返回為XML格式資料。
具體的使用方法
建立XMLHTTP對象的語句如下:
Set objXML = CreateObject("Msxml2.XMLHTTP") 或
Set objXML = CreateObject("Microsoft.XMLHTTP")
'Or for version 3.0 of XMLHTTP, use:
'Set objXML = Server.CreateObject("MSXML2.ServerXMLHTTP")
對象建立後調用Open方法對Request對象進行初始化,文法格式為:
objXML.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資料:
objXML.send()
Send方法的參數類型是Variant,可以是字串、DOM樹或任意資料流。
發送資料的方式分為同步和非同步兩種。在非同步方式下,資料包一旦發送完畢,就結束Send進程,客戶機執行其他的操作;而在同步方式下,客戶機要等到伺服器返回確認訊息後才結束Send進程。
XMLHTTP對象中的readyState屬性
其能夠反映出伺服器在處理請求時的進展狀況。客戶機的程式可以根據這個狀態資訊設定相應的事件處理方法。屬性值及其含義如下表所示:
值 說明
0 Response對象已經建立,但XML文檔上傳過程尚未結束
1 XML文檔已經裝載完畢
2 XML文檔已經裝載完畢,正在處理中
3 部分XML文檔已經解析
4 文檔已經解析完畢,用戶端可以接受返回訊息
客戶機處理響應資訊,客戶機接收到返回訊息後,進行簡單的處理,基本上就完成了C/S之間的一個互動周期。
客戶機接收響應是通過XMLHTTP對象的屬性實現的:
responseText:將返回訊息作為文本字串;
responseBody:將返回訊息作為HTML文檔內容;
responseXML:將返回訊息視為XML文檔,在伺服器響應訊息中含有XML資料時使用;
responseStream:將返回訊息視為Stream對象
以下是一個簡單的例子:類似新聞小偷
<%
Set objXML = Server.CreateObject("MSXML2.ServerXMLHTTP")
objXML.open "GET","http://www.alexa.com",false
objXML.send()
response.write(objXML.responseText)
%>
status
// Number:Description
// 100:Continue
// 101:Switching protocols
// 200:OK
// 201:Created
// 202:Accepted
// 203:Non-Authoritative Information
// 204:No Content
// 205:Reset Content
// 206:Partial Content
// 300:Multiple Choices
// 301:Moved Permanently
// 302:Found
// 303:See Other
// 304:Not Modified
// 305:Use Proxy
// 307:Temporary Redirect
// 400:Bad Request
// 401:Unauthorized
// 402:Payment Required
// 403:Forbidden
// 404:Not Found
// 405:Method Not Allowed
// 406:Not Acceptable
// 407:Proxy Authentication Required
// 408:Request Timeout
// 409:Conflict
// 410:Gone
// 411:Length Required
// 412:Precondition Failed
// 413:Request Entity Too Large
// 414:Request-URI Too Long
// 415:Unsupported Media Type
// 416:Requested Range Not Suitable
// 417:Expectation Failed
// 500:Internal Server Error
// 501:Not Implemented
// 502:Bad Gateway
// 503:Service Unavailable
// 504:Gateway Timeout
// 505:HTTP Version Not Supported