Vbscript vbs-是否可以将IE对象会话移交给MSXML2.XMLHTTP对象?

Vbscript vbs-是否可以将IE对象会话移交给MSXML2.XMLHTTP对象?,vbscript,Vbscript,我有一个MS SQL框,其中包含一系列ETL例程,可以通过web界面和Oracle CRM On Demand从Oracle OBIE中提取数据 OBIEE提取使用MSXML2.XMLHTTP对象,工作完美——用户凭证在URL中发送(都在防火墙后面) 目前,我唯一成功的CRM随需应变方法是使用IE对象,模拟登录、导航到报告页面(xml url)以及将结果呈现页面保存到文件系统以供SQL使用的操作。我面临的挑战是,对于较大的报告,IE的xml呈现会出现问题,要么超时,要么格式不正确。此外,IE对象

我有一个MS SQL框,其中包含一系列ETL例程,可以通过web界面和Oracle CRM On Demand从Oracle OBIE中提取数据

OBIEE提取使用MSXML2.XMLHTTP对象,工作完美——用户凭证在URL中发送(都在防火墙后面)

目前,我唯一成功的CRM随需应变方法是使用IE对象,模拟登录、导航到报告页面(xml url)以及将结果呈现页面保存到文件系统以供SQL使用的操作。我面临的挑战是,对于较大的报告,IE的xml呈现会出现问题,要么超时,要么格式不正确。此外,IE对象看起来像是片状的,通常会报告ObjBusy=false和readystate=4,但显然它仍在处理中-因此需要一些丑陋的黑客来检查循环中生成的呈现页面的大小

理想的首选方法是使用MSXML2.XMLHTTP对象,但我无法对该对象进行身份验证。我需要登录的页面是

如果有人知道如何通过身份验证页面,我可以简单地使用现有的方法——否则,有一个选项可以以某种方式将我的身份验证会话从IE对象传递到MSXML2.XMLHTTP对象,这将允许取消XML大小限制

相关MSXML2.XMLHTTP代码

Dim xmlHTTP : Set xmlHTTP = CreateObject("MSXML2.XMLHTTP.6.0") 'Microsoft.XMLHTTP
Const adTypeBinary = 1 ' ado typelib constants
Const SourceURL = "https:// URL HERE"
xmlHTTP.Open "GET", SourceURL, bGetAsAsync, "userid", "pass"
xmlHTTP.Send
'further code to save file not relevant
Set objIE = CreateObject("InternetExplorer.Application")
set WshShell = CreateObject("WScript.Shell")

objIE.Navigate "https://sso.crmondemand.com/router/logon.jsp"
objIE.visible = true

    Do While objIE.Busy
        wscript.sleep 200
    Loop
    Do Until objIE.ReadyState = 4 'READYSTATE_COMPLETE
        wscript.sleep 200
    Loop

objIE.Document.getElementById("IPT_SC_SignIn").innerText = myUserName
objIE.Document.getElementById("IPT_SC_Password").innerText = myPassword
objIE.Document.Forms(0).Submit()

    Do While objIE.Busy
        wscript.sleep 200
    Loop
    Do Until objIE.ReadyState = 4 'READYSTATE_COMPLETE
        wscript.sleep 200
    Loop

objIE.Navigate "https:// Path to report... &Action=Download&Format=xml"

    Do While objIE.Busy
        wscript.sleep 200
    Loop
    Do Until objIE.ReadyState = 4 'READYSTATE_COMPLETE
        wscript.sleep 200
    Loop

myVar2 = len(objIE.document.documentElement.innertext)
wscript.sleep 1000

Do While len(objIE.document.documentElement.innertext)<>myVar2
    myVar2 = len(objIE.document.documentElement.innertext)
    wscript.sleep 1000
Loop
'further code to save file not relevant
相关IE目标代码

Dim xmlHTTP : Set xmlHTTP = CreateObject("MSXML2.XMLHTTP.6.0") 'Microsoft.XMLHTTP
Const adTypeBinary = 1 ' ado typelib constants
Const SourceURL = "https:// URL HERE"
xmlHTTP.Open "GET", SourceURL, bGetAsAsync, "userid", "pass"
xmlHTTP.Send
'further code to save file not relevant
Set objIE = CreateObject("InternetExplorer.Application")
set WshShell = CreateObject("WScript.Shell")

objIE.Navigate "https://sso.crmondemand.com/router/logon.jsp"
objIE.visible = true

    Do While objIE.Busy
        wscript.sleep 200
    Loop
    Do Until objIE.ReadyState = 4 'READYSTATE_COMPLETE
        wscript.sleep 200
    Loop

objIE.Document.getElementById("IPT_SC_SignIn").innerText = myUserName
objIE.Document.getElementById("IPT_SC_Password").innerText = myPassword
objIE.Document.Forms(0).Submit()

    Do While objIE.Busy
        wscript.sleep 200
    Loop
    Do Until objIE.ReadyState = 4 'READYSTATE_COMPLETE
        wscript.sleep 200
    Loop

objIE.Navigate "https:// Path to report... &Action=Download&Format=xml"

    Do While objIE.Busy
        wscript.sleep 200
    Loop
    Do Until objIE.ReadyState = 4 'READYSTATE_COMPLETE
        wscript.sleep 200
    Loop

myVar2 = len(objIE.document.documentElement.innertext)
wscript.sleep 1000

Do While len(objIE.document.documentElement.innertext)<>myVar2
    myVar2 = len(objIE.document.documentElement.innertext)
    wscript.sleep 1000
Loop
'further code to save file not relevant
Set objIE=CreateObject(“InternetExplorer.Application”)
设置WshShell=CreateObject(“WScript.Shell”)
objIE.导航“https://sso.crmondemand.com/router/logon.jsp"
objIE.visible=true
忙的时候去做
wscript.sleep 200
环
直到objIE.ReadyState=4'ReadyState\u完成
wscript.sleep 200
环
objIE.Document.getElementById(“IPT\u SC\u SignIn”).innerText=myUserName
objIE.Document.getElementById(“IPT\U SC\U密码”).innerText=myPassword
objIE.Document.Forms(0.Submit())
忙的时候去做
wscript.sleep 200
环
直到objIE.ReadyState=4'ReadyState\u完成
wscript.sleep 200
环
导航“https://Path to report…&Action=Download&Format=xml”
忙的时候去做
wscript.sleep 200
环
直到objIE.ReadyState=4'ReadyState\u完成
wscript.sleep 200
环
myVar2=len(objIE.document.documentElement.innertext)
wscript.sleep 1000
Do While len(objIE.document.documentElement.innertext)myVar2
myVar2=len(objIE.document.documentElement.innertext)
wscript.sleep 1000
环
'保存文件的其他代码不相关

对于堆栈溢出,这似乎是一个更合适的问题。谢谢-很好的建议。。。n00b帮助海报:)