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

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

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

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

    像丁香花一樣靜靜的等待

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

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

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

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

    setRequestHeader( bstrHeader, bstrvalue )
    bstrHeader:HTTP 頭(header)
    bstrvalue: HTTP 頭(header)的值

    如果Open方法定義為POST,可以定義表單方式上傳:
    xmlhttp.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded")

    三、XMLHTTP屬性:
    onreadystatechange:在同步執(zhí)行方式下獲得返回結果的事件句柄。只能在DOM中調用。
    responseBody: 結果返回為無符號整數(shù)數(shù)組。
    responseStream: 結果返回為IStream流。
    responseText : 結果返回為字符串。
    responseXML: 結果返回為XML格式數(shù)據。

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

    < /script > 

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

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

    (二)事例

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

    代碼: 

    代碼片段
    <% 
    ’常用函數(shù) 

    ’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遠程讀取網頁的內容,然后根據需要,對讀到的內容進行加工(過濾,替換,分類),最后得到自己需要的數(shù)據,加入到數(shù)據庫中。
    首先:我們先用XMLHTTP讀取遠程網頁(我的另一片文章中有介紹)。
    其次:對內容進行過濾,這個是比較關鍵的步驟,比如說,我要從遠程網頁上提取出所有url連接,我應該怎么做呢?
    代碼:
    ‘這里用的是正則式

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

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

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

    ’ 首先,進行小偷程序的一些初始化設置,以上代碼的作用分別是忽略掉所有非致命性錯誤,把小偷程序的運行超時時間設置得很長(這樣不會出現(xiàn)運行超時的錯 誤),轉換原來默認的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組件創(chuàng)建一個對象并進行初始化設置。 

    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 

    ’處理抓取回來的數(shù)據需要調用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) 
    ’獲取指定頁面的全部數(shù)據 

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

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

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

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

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

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

    response.write body 
    %>
    posted on 2007-06-14 14:00 dyin 閱讀(520) 評論(0)  編輯  收藏 所屬分類: JavaScript
    主站蜘蛛池模板: 久9热免费精品视频在线观看| 羞羞视频免费网站含羞草| 日本免费电影一区二区| 色噜噜AV亚洲色一区二区| 一区二区免费在线观看| 亚洲欧洲中文日韩久久AV乱码| 精品一区二区三区无码免费直播| 国产成人免费全部网站| 黄色免费网址在线观看| 亚洲国产精品综合久久一线| 本道天堂成在人线av无码免费| 亚洲国产精品乱码在线观看97| 免费A级毛片av无码| 中文字幕亚洲精品| 4hu四虎最新免费地址| 亚洲精品第一综合99久久| 免费观看的a级毛片的网站| 老司机午夜在线视频免费观| 国产精品亚洲玖玖玖在线观看 | 亚洲精品综合一二三区在线| 亚洲精品免费在线观看| 色在线亚洲视频www| 国产一级一片免费播放| 国产裸体美女永久免费无遮挡| 亚洲2022国产成人精品无码区| 51视频精品全部免费最新| 一本色道久久88—综合亚洲精品 | 欧美激情综合亚洲一二区| 亚洲日韩人妻第一页| 日韩精品极品视频在线观看免费 | 亚洲同性男gay网站在线观看| 免费高清资源黄网站在线观看| 乱人伦中文视频在线观看免费| 亚洲狠狠久久综合一区77777| 男女免费观看在线爽爽爽视频| 国产亚洲福利精品一区二区| 西西人体44rt高清亚洲| 成年女人18级毛片毛片免费观看| 精品亚洲成a人片在线观看少妇| APP在线免费观看视频| 亚洲av成人综合网|