忘了放上声明 '┏〓〓〓〓〓〓〓〓 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 〓〓〓〓〓〓〓〓〓┛
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 〓〓〓〓〓〓〓〓〓┛
Microsoft.XMLHTTP不支持Referer验证。
而Msxml2.xmlhttp支持。
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")