1

我对使用 XMLHTTP 并尝试使用 Excel VBA 从我们公司的网站下载报告完全陌生。我似乎遇到的问题是该站点受 Siteminder 保护。我想我需要使用带有 GET 的 XMLHTTP.Open 但无论如何我尝试的只是我似乎得到的只是 Siteminder HTML 代码。因此,我尝试首先使用帖子将我的用户名和密码发送到 Siteminder,例如:

Function PostXmlData(vUrl As String, UserName As String, Password As String, xmlText     
As String
Dim XMLHttp As Object
Set XMLHttp = CreateObject("MSXML2.XMLHTTP")
XMLHttp.Open "POST", vUrl, False, UserName, Password
XMLHttp.setRequestHeader "Content-Type", "text/xml;charset=utf-8"   

XMLHttp.send (xmlText)
PostXmlData = XMLHttp.responseText
End Function

Sub Posttest ()
Dim add As String
Dim User As String
Dim Pass As String
Dim send As String
Dim ret As Variant

add = "https://mycompanywebsite.com/apps/application/Main/"
User = "username"
Pass = "password"
Send="DashboardId=http://mycompanywebsite.com/DAVCatalog/Dashboards/Teams/Client%20_
Extranet%20AM"

ret = PostXmlData(add, User, Pass, send)
End Sub

我是在正确的轨道上还是这甚至不可能?任何建议将不胜感激,或者如果有一些网站有人可以指导我,那将很有帮助。谢谢。

4

2 回答 2

1

您需要将其加载responseText到一个XMLDocument中以便您可以解析它。请参见下面的示例(确保将 Microsoft XML 引用添加到参考库)

Dim xmldoc As MSXML2.DOMDocument

' Create a new XMLDocument to which to load the XML text
Set xmlDoc = New DOMDocument
xmldoc.LoadXML (xmlhttp.responseText)

' Fetch the XML
Set xmlhttp = CreateObject("Microsoft.xmlHTTP")
xmlhttp.Open "Get", yourURL, False
xmlhttp.send

' Create a new XMLDocument to which to load the XML text
Set xmlDoc = New DOMDocument
xmldoc.LoadXML (xmlhttp.responseText)

从这里开始,您应该能够使用 、 等对象解析NodeListXML DOMElement

于 2013-09-10T21:47:02.297 回答
0

你能发布 SiteMinder HTML 响应吗?看起来身份验证可能会失败。尝试将凭据作为 base64 编码的标头发送,而不是将它们提供给 XMLHttp 组件。

这是格式。

授权:基本QWxhZGRpbjpvcGVuIHNlc2FtZQ==

'Basic' 之后的字符串是 'id:password' 格式的 base64 编码凭据。

于 2013-09-13T14:09:29.593 回答