Vb.net Microsoft.XMLHTTP的多个实例
我尝试连接一个有多个用户登录的网站 连接站点时,会话ID在Web浏览器中设置为cookie。 我试图通过生成一个对象数组来解决这个问题Vb.net Microsoft.XMLHTTP的多个实例,vb.net,excel,vba,Vb.net,Excel,Vba,我尝试连接一个有多个用户登录的网站 连接站点时,会话ID在Web浏览器中设置为cookie。 我试图通过生成一个对象数组来解决这个问题 For i = 1 To Cnz Set oHttp(i) = CreateObject("Microsoft.XMLHTTP") Next i 不幸的是,看起来所有XMLHTTP对象共享相同的Cookie会话ID 有没有办法拥有独立的浏览器对象? 或者手动设置cookies? 或者使用不同的对象发送http,在使用Cookie管理会话ID时获取结果 使用
For i = 1 To Cnz
Set oHttp(i) = CreateObject("Microsoft.XMLHTTP")
Next i
不幸的是,看起来所有XMLHTTP对象共享相同的Cookie会话ID
有没有办法拥有独立的浏览器对象?
或者手动设置cookies?
或者使用不同的对象发送http,在使用Cookie管理会话ID时获取结果 使用
MakeSessionRequest
功能,您可以检索存储在cookie中的会话id,并在所有后续请求中使用
xmlHTTP.setRequestHeader“Cookie”、“=”
函数MakeSessionRequest(方法为字符串,url为字符串,数据为字符串_
ByRef cookie作为字符串,可选ByRef updateCookie=False)作为字节()
如果Len(cookie)=0,则cookie=“dummy=dummy;”
httpReferrer=Trim(url)
postVars=修剪(数据)
Dim XMLHTTP作为对象
设置XMLHTTP=CreateObject(“MSXML2.serverXMLHttp”)
Open方法,Trim(url),False
如果UCase(方法)=“POST”,则
XMLHTTP.setRequestHeader“内容类型”_
“应用程序/x-www-form-urlencoded”
如果结束
XMLHTTP.setRequestHeader“Referer”,httpReferrer,以防服务器关心
XMLHTTP.setRequestHeader“Cookie”,“用于处理XMLHTTP错误”
XMLHTTP.setRequestHeader“Cookie”,Cookie
XMLHTTP.send postVars
等待回应
而XMLHTTP.readyState 4
XMLHTTP.waitForResponse 1000
温德
'从响应头中提取cookie数据
如果是的话
cookie=“”
strHeaders=XMLHTTP.getAllResponseHeaders()
hArr=Split(strHeaders,“设置Cookie:”)
对于kk=1至UBound(hArr)
cookie=Left(hArr(kk),InStr(hArr(kk),“path=/”-2)
cookie=cookie&&&theCookie
下一个
如果结束
'返回响应体
MakeSessionRequest=XMLHTTP.ResponseBy
设置XMLHTTP=Nothing
端函数
Function MakeSessionRequest(method As String, url As String, data As String, _
ByRef cookie As String, Optional ByRef updateCookie = False) As Byte()
If Len(cookie) = 0 Then cookie = "dummy=dummy;"
httpReferrer = Trim(url)
postVars = Trim(data)
Dim XMLHTTP As Object
Set XMLHTTP = CreateObject("MSXML2.serverXMLHttp")
XMLHTTP.Open method, Trim(url), False
If UCase(method) = "POST" Then
XMLHTTP.setRequestHeader "Content-Type", _
"application/x-www-form-urlencoded"
End If
XMLHTTP.setRequestHeader "Referer", httpReferrer 'in case the server cares
XMLHTTP.setRequestHeader "Cookie", "to deal with XMLHTTP bug"
XMLHTTP.setRequestHeader "Cookie", cookie
XMLHTTP.send postVars
'wait for response
While XMLHTTP.readyState <> 4
XMLHTTP.waitForResponse 1000
Wend
' extract the cookie data from the response header
If updateCookie Then
cookie = ""
strHeaders = XMLHTTP.getAllResponseHeaders()
hArr = Split(strHeaders, "Set-Cookie: ")
For kk = 1 To UBound(hArr)
theCookie = Left(hArr(kk), InStr(hArr(kk), "path=/") - 2)
cookie = cookie & " " & theCookie
Next
End If
'return the response body
MakeSessionRequest = XMLHTTP.responseBody
Set XMLHTTP = Nothing
End Function