本帖最后由 hktkzyz 于 2014-09-25 23:16:47 编辑

解决方案 »

  1.   

    使用api函数URLDownloadToFilePrivate Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As LongPrivate Function getHtmlStr2$(strUrl$)
        Const tmpfile As String = "c:\tmp.tmp"
        URLDownloadToFile 0, strUrl, tmpfile, 0, 0
        Do Until FileLen(tmpfile)
            DoEvents
        Loop
        Dim fn%, tmp$
        fn = FreeFile
        Open tmpfile For Binary Access Read As #fn
        tmp = Space(FileLen(tmpfile))
        Get #fn, , tmp
        Close #fn
        getHtmlStr2 = tmp
    End Function
      

  2.   

    我下面这样,好像可以获取,不出错。
    Private Sub Command1_Click()
        Command1.Enabled = False
        GetHtmlStr Text1
    End SubPrivate Sub GetHtmlStr(strUrl As String)
        Dim xml As Object
        
        Set xml = CreateObject("msxml2.serverxmlhttp")
        xml.Open "GET", strUrl, False
        xml.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        xml.setRequestHeader "Accept-Language", "zh-cn"
        xml.setRequestHeader "Accept-Encoding", "gzip, deflate"
        xml.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; SV1; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"
        
        xml.send
        Do While xml.readyState <> 4
            DoEvents
        Loop
        Text2 = StrConv(xml.ResponseBody, vbUnicode)
        Set xml = Nothing
        Command1.Enabled = True
    End Sub
      

  3.   


    太棒了,就是我想要的,我看也是使用的get方法,好像原理一样,只是引用的对象不一样,具体参数也不一样。
    我在网上搜了好几天,居然都没有见过你这个方法,api那个见过,但是还是喜欢xmlhttp。能给讲解一下吗,或者给一个相关的链接教程,我补充一下知识。非常非常感谢呀。
      

  4.   


    因为该页面要跳转几次,所以xmlhttp会老是提示拒绝访问。还有个简单的方法,就是用Inet控件,一句话搞定:Text2 = Inet1.OpenURL("http://detail.tmall.com/item.htm?id=25854064127")
      

  5.   


    太厉害了,这个跳转是怎么得到的呀,真是太崇拜你了。另外,inet不行吧,我第一开始就是用的inet,只能得到部分代码。
      

  6.   


    太厉害了,这个跳转是怎么得到的呀,真是太崇拜你了。另外,inet不行吧,我第一开始就是用的inet,只能得到部分代码。inet我试过了,可以的呀。 跳转是用"WinHttp.WinHttpRequest.5.1"的getResponseHeader("Location")获得的。
      

  7.   

    inet先不纠结了,先不用他了,我觉的Carlven2012的msxml2很好用,虽然各个参数都还不太明白,我下来在学习,不过这个是感觉最好用的,我的基础知识积累还不够,需要积累,最后,再非常虚心诚恳的谢过Carlven2012,同时也感谢其他几位朋友,你们对我的帮助,是我学习的最大动力。