服務器XMLHTTP(Server XMLHTTP in ASP)基礎知識
2024-05-04 11:00:03
供稿:網友
相對于 Ajax,服務端 XMLHTTP 就是在服務端使用 XMLHttpRequest 對象了。雖然說,在服務端使用異步請求是比較不方便的,但是做為可以服務端發送 HTTP 請求的組件,學習一下也是沒有壞處的。
這里,我講的是在 ASP 環境中使用服務端 XMLHttpRequest,并以 JScript 做為演示代碼的語言,因此,你需要了解 ASP 以及 JScript。
服務端 XMLHTTP,通常會用在獲取遠程主機的網頁或者其他內容,新聞聚合系統一般就是使用服務端 XMLHTTP 對象來獲取要聚合的 Feed 的內容,然后使用 XMLDOM 對象來分析 Feed 的內容,取出新聞的標題、作者、內容等信息,再存在數據庫中,然后將若干個數據源的新聞一起顯示在一起。抓蝦就是這樣一個新聞聚合器,但是它不是用 ASP 寫的就是了 :)
在 ASP 中,我們可以用以下代碼來創建一個 ServerXMLHTTP 對象,而這個對象,就是我們在服務端進行一切操作的基礎。
復制代碼 代碼如下:
var xmlhttp = new ActiveXObject("MSXML2.ServerXMLHTTP.5.0");
首先來了解一下 ServerXMLHTTP 對象有哪些比較有用的方法:
1. abort 這個方法用于取消 XMLHTTP 的請求。如果 XMLHTTP 對象以異步方式發送請求,如果到達一定的時間請求仍然沒有返回,就可以使用這個方法來取消請求。
2. getAllResponseHeaders 這個方法的返回值是一個字符串,相當于 HTTP 請求的頭部去掉了請求方法、URI和協議版本信息。
3. getResponseHeader 這個方法用來獲取指定頭部信息,比較有用的就是可以用來獲取返回數據的 Content-Type、Referer 等。
4. open 使用指定的請求方法、URI和同步方式以及認證信息等初始化一個請求。
5. send 發送 HTTP 請求,等待接收響應數據,注意,如果是以同步方式發送請求,send方法調用后不會立即返回,而是等到請求完成后才會返回,而以異步方法請求時,則會立即返回。另外,send方法帶有一個可選參數body,表示要發送的數據,這在使用 POST 方法時比較有用。
6. setTimeout 設置 ServerXMLHTTP 對象的 4 個超時時間,分別是:域名解析、連接服務器、發送數據、接收響應??梢酝ㄟ^設置相應的超時時間來控制 ServerXMLHTTP 對象,以免 ServerXMLHTTP 不能及時返回而造成程序停止響應。
7. setRequestHeader 設置請求的 Header,在客戶端 XMLHttpRequest中,通常用來設置請求的數據類型,或者標識請求的方法等等,例如 jquery 會增加頭部標識 X-Request-With,表示請求是從 XMLHttpRequest 對象發出,以方便服務端做出相應的動作。
8. waitForResponse 在使用異步方式發送請求時,可以用這個方法來控制請求的進程。在服務端腳本中,不可以像客戶端那樣直接使用回調函數來控制異步請求,也沒有相應的函數來使用程序休眠一定的時間,因此,為了等待請求返回,我們可以使用這個方法來等待一定時間。