Vb.net Microsoft.XMLHTTP的多个实例

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时获取结果 使用

我尝试连接一个有多个用户登录的网站

连接站点时,会话ID在Web浏览器中设置为cookie。 我试图通过生成一个对象数组来解决这个问题

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