• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    小偷&小偷入库&采集入库
    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://wmjie.51.net/swords的html内容 
    Dim Url,Html 
    Url="http://wmjie.51.net/swords/" 
    Html = getHTTPPage(Url) 
    Response.write Html 
    %> 

    ------------------------------------------------------ 
    代码: 
    '代码]用XMLHTTP读取远程文件 


    Response.Buffer = True 
    Dim objXMLHTTP, xml 
    Set xml = Server.CreateObject("Microsoft.XMLHTTP" 

    xml.Open "GET", "http://wmjie.51.net/swords/diary.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 
    引用: 远程获取内容,并将内容存在本地电脑上,包括任何文件 


    '----------远程获取内容,并将内容存在本地电脑上,包括任何文件!---------- 
    'On Error Resume Next 
    'Set the content type to the specific type that you are sending. 
    'Response.ContentType = "IMAGE/JPEG" 
    '-------------------------------定义输出格式----------------------------- 

    Path=request.querystring("p") 
    sPath = Path 
    if left(lcase(path),7) > "http://"; then 
    '-------------如果前面没有http就是本地文件,交给LocalFile处理------------ 
    LocalFile(path) 
    else 
    '--------------------否则为远程文件,交给RemoteFile处理------------------ 
    RemoteFile(Path) 
    end if 
    'Response.Write err.Description 

    sub LocalFile(Path) 
    '-------------------如果为本地文件则简单的跳转到该页面------------------- 
    Response.Redirect Path 
    End Sub 

    Sub RemoteFile(sPath) 
    '-------------------------处理远程文件函数------------------------------ 
    FileName = GetFileName(sPath) 
    '-------------GetFileName为把地址转换为合格的文件名过程------------- 
    FileName = Server.MapPath("/UploadFile/Cache/"  FileName) 
    Set objFso = Server.CreateObject("Scripting.FileSystemObject") 
    'Response.Write fileName 
    if objFso.FileExists(FileName) Then 
    '--------------检查文件是否是已经访问过,如是,则简单跳转------------ 
    Response.Redirect "/uploadfile/cache/"  GetFileName(path) 
    Else 
    '----------------否则的话就先用GetBody函数读取---------------------- 
    'Response.Write Path 
    t = GetBody(Path) 
    '-----------------用二进制方法写到浏览器上-------------------------- 
    Response.BinaryWrite t 
    Response.Flush 
    '-----------------输出缓冲------------------------------------------ 
    SaveFile t,GetFileName(path) 
    '------------------将文件内容缓存到本地路径,以待下次访问----------- 
    End if 
    Set objFso = Nothing 
    End Sub 

    Function GetBody(url) 
    '-----------------------本函数为远程获取内容的函数--------------------- 
    'on error resume next 
    'Response.Write url 
    Set Retrieval = CreateObject("Microsoft.XMLHTTP") 
    '----------------------建立XMLHTTP对象----------------------------- 
    With Retrieval 
    .Open "Get", url, False, "", "" 
    '------------------用Get,异步的方法发送----------------------- 
    .Send 
    'GetBody = .ResponseText 
    GetBody = .ResponseBody 
    '------------------函数返回获取的内容-------------------------- 
    End With 
    Set Retrieval = Nothing 
    'response.Write err.Description 
    End Function 

    Function GetFileName(str) 
    '-------------------------本函数为合格化的文件名函数------------------- 
    str = Replace(lcase(str),"http://";,"") 
    str = Replace(lcase(str),"//","/") 
    str = Replace(str,"/","") 
    str = replace(str,vbcrlf,"") 
    GetFileName = str 
    End Function 

    sub SaveFile(str,fName) 
    '-------------------------本函数为将流内容存盘的函数------------------- 
    'on error resume next 
    Set objStream = Server.CreateObject("ADODB.Stream") 
    '--------------建立ADODB.Stream对象,必须要ADO 2.5以上版本--------- 
    objStream.Type = adTypeBinary 
    '-------------以二进制模式打开------------------------------------- 
    objStream.Open 
    objstream.write str 
    '--------------------将字符串内容写入缓冲-------------------------- 
    'response.Write fname 
    objstream.SaveToFile "c:\inetpub\myweb\uploadfile\cache\"  fName,adSaveCreateOverWrite 
    '--------------------将缓冲的内容写入文件-------------------------- 
    'response.BinaryWrite objstream.Read 
    objstream.Close() 
    set objstream = nothing 
    '-----------------------关闭对象,释放资源------------------------- 
    'response.Write err.Description 
    End sub 
    %> 
    上一篇:XML+XSL+CSS+ASP打造留言簿
    下一篇:使用asp代码突破163相册的防盗连
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    小偷&小偷入库&采集入库 小偷,amp,入库,采集,小偷,