<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    在希臘帕爾納斯山南坡上,有一個馳名世界的戴爾波伊神托所,在它的入口處的巨石上赫然銹刻著這樣幾個大字: 認識你自己!

    像丁香花一樣靜靜的等待

       :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      21 隨筆 :: 2 文章 :: 32 評論 :: 0 Trackbacks
    XMLHTTP應用參考
    一、使用步驟:
    1、創建XMLHTTP對象 //需MSXML4.0支持
    2、打開與服務端的連接,同時定義指令發送方式,服務網頁(URL)和請求權限等。客戶端通過Open命令打開與服務端的服務網頁的連接。與普通HTTP指令傳送一樣,可以用"GET"方法或"POST"方法指向服務端的服務網頁。
    3、發送指令。
    4、等待并接收服務端返回的處理結果。
    5、釋放XMLHTTP對象

    二、XMLHTTP方法:
    1、XMLHTTP對象
    備注:客戶機可以使用XMLHTTP對象發送任意的HTTP請求,接受HTTP應答,還可以對應答的XML文檔進行解析。

    Open方法:初始化一個Msxml2.XMLHTTP請求,指定HTTP請求方式、URL以及鑒定信息。
    Open( bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword )
    bstrMethod: 數據傳送方式,即GET或POST。
    bstrUrl: 服務網頁的URL。
    varAsync: 是否同步執行。缺省為True,即同步執行,但只能在DOM中實施同步執行。用中一般將其置為False,即異步執行。
    bstrUser: 用戶名,可省略。
    bstrPassword:用戶口令,可省略。

    Send方法:發送HTTP請求到服務器,返回應答。
    語法:
    oXMLHttpRequest.send(varBody)
    說明:此方法是否同步取決于Open方法的varAsync參數。如果設為True則為同步,調用立刻返回,如果設為False調用直到整個應答被接收了才返回。

    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格式數據。

    四、示例:
    代碼片段
    < script language="javascript" > 
    function getDatal(url){ 
    var xmlhttp  = new ActiveXObject("MSXML2.XMLHTTP.4.0";//創建XMLHTTPRequest對象,需MSXML4.0支 持 ["MSXML2.XMLHTTP.4.0","MSXML2.DOMDocument.4.0"] 
    xmlhttp.open("GET",url,false,"",""; //使用HTTP GET初始化HTTP請求 
    xmlhttp.send(""; //發送HTTP請求并獲取HTTP響應 
    return xmlhttp.responseXML; //獲取XML文檔 

    < /script > 

      現在網上流行的小偷程序比較多,有新聞類小偷,音樂小偷,下載小偷,那么它們是如何做的呢,下面我來做個簡單介紹,希望對各位站長有所幫助。

    (一)原理
      小偷程序實際上是通過了XML中的XMLHTTP組件調用其它網站上的網頁。比如新聞小偷程序,很多都是調用了sina的 新聞網頁,并且對其中的html進行了一些替換,同時對廣告也進行了過濾。用小偷程序的優點有:無須維護網站,因為小偷程序中的數據來自其他網站,它將隨 著該網站的更新而更新;可以節省服務器資源,一般小偷程序就幾個文件,所有網頁內容都是來自其他網站。缺點有:不穩定,如果目標網站出錯,程序也會出錯, 而且,如果目標網站進行升級維護,那么小偷程序也要進行相應修改;速度,因為是遠程調用,速度和在本地服務器上讀取數據比起來,肯定要慢一些。

    (二)事例

    下面就XMLHTTP在ASP中的應用做個簡單說明

    代碼: 

    代碼片段
    <% 
    ’常用函數 

    ’1、輸入url目標網頁地址,返回值getHTTPPage是目標網頁的html代碼 
    function getHTTPPage(url) 
    dim Http 
    set Http=server.createobject("MSXML2.XMLHTTP" 
    Http.open "GET",url,false 
    Http.send() 
    if Http.readystate<>4 then 
    exit function 
    end if 
    getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312" 
    set http=nothing 
    if err.number<>0 then err.Clear 
    end function 

    ’2、轉換亂瑪,直接用xmlhttp調用有中文字符的網頁得到的將是亂瑪,可以通過adodb.stream組件進行轉換 
    Function BytesToBstr(body,Cset) 
    dim objstream 
    set objstream = Server.CreateObject("adodb.stream" 
    objstream.Type = 1 
    objstream.Mode =3 
    objstream.Open 
    objstream.Write body 
    objstream.Position = 0 
    objstream.Type = 2 
    objstream.Charset = Cset 
    BytesToBstr = objstream.ReadText 
    objstream.Close 
    set objstream = nothing 
    End Function 

    ’下面試著調用http://www.998w.net/class/的html內容 
    Dim Url,Html 
    Url="http://www.998w.net/class/" 
    Html = getHTTPPage(Url) 
    Response.write Html 
    %>

     ------------------------------------------------------
    代碼:
    '代碼]用XMLHTTP讀取遠程文件

    代碼片段
    <% 
    Response.Buffer = True 
    Dim objXMLHTTP, xml 
    Set xml = Server.CreateObject("Microsoft.XMLHTTP" 

    xml.Open "GET", "http://www.998w.net/down/998w1.0.rar", False 

    xml.Send 

    ’ Add a header to give it a file name: 
    Response.AddHeader "Content-Disposition", _ 
    "attachment;filename=mitchell-pres.zip" 

    ’ Specify the content type to tell the browser what to do: 
    Response.ContentType = "application/zip" 

    ’ Binarywrite the bytes to the browser 
    Response.BinaryWrite xml.responseBody 

    Set xml = Nothing 
    %> 

    -------------------------------------
    如何寫ASP入庫小偷程序
      入庫小偷的原理也很簡單:就是用XMLHTTP遠程讀取網頁的內容,然后根據需要,對讀到的內容進行加工(過濾,替換,分類),最后得到自己需要的數據,加入到數據庫中。
    首先:我們先用XMLHTTP讀取遠程網頁(我的另一片文章中有介紹)。
    其次:對內容進行過濾,這個是比較關鍵的步驟,比如說,我要從遠程網頁上提取出所有url連接,我應該怎么做呢?
    代碼:
    ‘這里用的是正則式

    代碼片段
    Set objRegExp = New Regexp ’建立對象 
    objRegExp.IgnoreCase = True ’大小寫忽略 
    objRegExp.Global = True ’全局為真 
    objRegExp.Pattern = "http://.+?" ’匹配字段 
    set mm=objRegExp.Execute(str) ’執行查找,str為輸入參數 
    For Each Match in mm ’進入循環 
    Response.write(Match.Value) ’輸出url地址 
    next 

    然后,我們需要根據需要做一些替換功能,把不必要的數據替換掉,這個比較簡單,用Replace函數即可。
    最后,進行數據庫操作
    -------------------------------
    一個例子
    代碼:

    代碼片段
    <% 
    On Error Resume Next 
    Server.ScriptTimeOut=9999999 
    Function getHTTPPage(Path) 
    t = GetBody(Path) 
    getHTTPPage=BytesToBstr(t,"GB2312" 
    End function 

    ’ 首先,進行小偷程序的一些初始化設置,以上代碼的作用分別是忽略掉所有非致命性錯誤,把小偷程序的運行超時時間設置得很長(這樣不會出現運行超時的錯 誤),轉換原來默認的UTF-8編碼轉換成GB2312編碼,否則直接用XMLHTTP組件調用有中文字符的網頁得到的將是亂碼。 

    Function GetBody(url) 
    on error resume next 
    Set Retrieval = CreateObject("Microsoft.XMLHTTP" 
    With Retrieval 
    .Open "Get", url, False, "", "" 
    .Send 
    GetBody = .ResponseBody 
    End With 
    Set Retrieval = Nothing 
    End Function 

    ’然后調用XMLHTTP組件創建一個對象并進行初始化設置。 

    Function BytesToBstr(body,Cset) 
    dim objstream 
    set objstream = Server.CreateObject("adodb.stream" 
    objstream.Type = 1 
    objstream.Mode =3 
    objstream.Open 
    objstream.Write body 
    objstream.Position = 0 
    objstream.Type = 2 
    objstream.Charset = Cset 
    BytesToBstr = objstream.ReadText 
    objstream.Close 
    set objstream = nothing 
    End Function 

    Function Newstring(wstr,strng) 
    Newstring=Instr(lcase(wstr),lcase(strng)) 
    if Newstring<=0 then Newstring=Len(wstr) 
    End Function 

    ’處理抓取回來的數據需要調用adodb.stream組件并進行初始化設置。%> 

    '以下即為頁面顯示部分

    代碼片段
    <% 
    Dim wstr,str,url,start,over,city 
    ’定義一些需要使用到的變量 

    city = Request.QueryString("id") 
    ’程序傳回的ID變量(即用戶選擇的城市)賦給id 

    url="http://appnews.qq.com/cgi-bin/news_qq_search?city="&city&"" 
    ’這里設置需要抓取的頁面地址,當然你也可以直接指定某個地址而不使用變量 

    wstr=getHTTPPage(url) 
    ’獲取指定頁面的全部數據 

    start=Newstring(wstr," <html>") 
    ’這里設置需要處理的數據的頭部,這個變量應視不同情況而設置,具體內容可以通過查看需要抓取的頁面的源代碼來確定。因為在這個程序里我們需要抓取整個頁面,所以設置為頁面全部抓取。注意,設置的內容必須是頁面內容唯一的,不可以重復。 

    over=Newstring(wstr," </HTML>") 
    ’和start相對應的就是需要處理的數據的尾部,同樣的,設置的內容必須是頁面中唯一的。 

    body=mid(wstr,start,over-start) 
    ’設置顯示頁面的范圍 

    ’下面就是動用乾坤挪移大法的時候了,通過replace可以用一些字符替換掉數據中指定的字符。 

    body = replace(body,"skin1","天氣預報 - 斯克網絡") 
    body = replace(body,"http://appnews.qq.com/cgi-bin/news_qq_search?city","tianqi.asp?id") 

    ’本程序中已經完成了替換的工作,如果有其他需要的話可以繼續進行類似的替換操作。 

    response.write body 
    %>
    posted on 2007-06-14 14:00 dyin 閱讀(520) 評論(0)  編輯  收藏 所屬分類: JavaScript
    主站蜘蛛池模板: 亚洲日韩精品无码专区网站| 国产大片免费网站不卡美女| 人人公开免费超级碰碰碰视频| 亚洲综合一区无码精品| 亚洲三级高清免费| 亚洲一区二区三区播放在线| 亚洲国产精品成人综合久久久| 在线观看亚洲人成网站| 亚洲日韩乱码中文无码蜜桃臀| 亚洲欧洲精品国产区| 456亚洲人成在线播放网站| 亚洲综合欧美色五月俺也去| 国产午夜亚洲精品| 亚洲AV色欲色欲WWW| 猫咪免费人成在线网站 | 亚洲人成无码网WWW| 国产亚洲精品拍拍拍拍拍| 久久夜色精品国产亚洲| 亚洲AV日韩AV永久无码下载| 蜜芽亚洲av无码精品色午夜| 亚洲国产成+人+综合| 亚洲一区二区三区在线观看网站| 亚洲heyzo专区无码综合| 麻豆69堂免费视频| 四虎影视无码永久免费| 最近免费中文字幕高清大全| av免费不卡国产观看| 国产精品久久香蕉免费播放| 亚洲欧洲中文日韩久久AV乱码| 久久亚洲国产精品一区二区| 亚洲视频手机在线| 亚洲heyzo专区无码综合| 国产精品免费在线播放| 麻花传媒剧在线mv免费观看| 四虎成人免费大片在线| 亚洲国产精品碰碰| 久久精品国产亚洲av高清漫画| 亚洲精品中文字幕| 久久国产乱子伦精品免费午夜 | 免费国产黄网站在线观看动图| a在线视频免费观看|