XMLhttp方式下载网页问题,Microsoft.XMLHTTP 和Msxml2.xmlhttp有什么区别?

解决方案 »

  1.   

    忘了放上声明 '┏〓〓〓〓〓〓〓〓   GetUrlByXmlHttp函数相关定义声明等 Start
    Private Declare Function GetTickCount Lib "kernel32" () As Long
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Private Declare Function DeleteUrlCacheEntry Lib "Wininet.dll" Alias "DeleteUrlCacheEntryA" (ByVal lpszUrlName As String) As Long
    '删除缓存中文件
    '┗〓〓〓〓〓〓〓〓   GetUrlByXmlHttp函数相关定义声明等 End
    '┏〓〓〓〓〓〓〓〓〓 GetUrlByXmlHttp,start 〓〓〓〓〓〓〓〓〓┓
    '[详介]:
    '函数注释:
    '[简介]:
    'XMLHTTP方式下载网页
    Function GetUrlByXmlHttp(Url As String, Optional MaxTime As Long = 20000, Optional ShowErr As Boolean = True, Optional KillCache As Boolean = True)
       '[mycode_id:2036],edittime:2011-9-8 下午 04:58:41
       On Error GoTo Err
       Dim XmlHttp '  As xmlhttp
       If KillCache Then DeleteUrlCacheEntry Url
       Set XmlHttp = CreateObject("Microsoft.XMLHTTP") '//建立对象
       
       With XmlHttp
               .Open "GET", Url, True
               .send
               On Error Resume Next
               Dim Tick As Long
               Dim S As Integer
               Tick = GetTickCount
               While Not S = 200 And GetTickCount - Tick < MaxTime
                   DoEvents
                   Sleep 1
                   S = .Status
               Wend
               
               If GetTickCount - Tick >= MaxTime And S <> 200 Then Exit Function
               GetUrlByXmlHttp = StrConv(.responseBody, vbUnicode)
       End With
       Set XmlHttp = Nothing '//释放
       
       Exit Function
       Err:
       If ShowErr Then MsgBox Err.Description & vbCrLf '获取错误信息,产生错误后,错误信息会放入vb.Err对象
       Err.Clear
    End Function
    '┗〓〓〓〓〓〓〓〓〓  GetUrlByXmlHttp,end  〓〓〓〓〓〓〓〓〓┛
      

  2.   

    个人感觉区别是:
    Microsoft.XMLHTTP不支持Referer验证。
    而Msxml2.xmlhttp支持。
      

  3.   

    详细看这里:http://baike.baidu.com/view/1806882.htm
    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,即异步执行。False,为同步执行。   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")