使用XMLHTTP和Siteminder安全站点的Excel VBA

时间:2013-09-10 20:03:55

标签: excel-vba xmlhttprequest siteminder vba excel

我完全不熟悉使用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

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

2 个答案:

答案 0 :(得分: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)

从这里开始,您应该能够使用NodeListDOMElement等对象解析XML。

答案 1 :(得分:0)

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

这是格式。

授权:基本QWxhZGRpbjpvcGVuIHNlc2FtZQ ==

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