我可以访问 API。API 将 XML 帖子作为输入,然后返回带有相关数据的 XML 响应。
我想要
- 将 HTTP Post 发送到服务器(身份验证和请求将一起发送)
- 接收响应(要返回的选项之一是 CSV 或 XML)
- 将数据插入适当的行和列,然后使用数据透视表执行数据分析。
我没有 excel 编程背景,但对不同的 Web 脚本语言、HTML、CSS、Javascript 等很熟悉。
有任何想法吗?
我可以访问 API。API 将 XML 帖子作为输入,然后返回带有相关数据的 XML 响应。
我想要
我没有 excel 编程背景,但对不同的 Web 脚本语言、HTML、CSS、Javascript 等很熟悉。
有任何想法吗?
可以使用此 VBA 代码处理 Excel 请求端。
Sub GetStuff()
Dim objXML As Object
Dim strData As String
Dim strResponse As String
strData = "Request"
Set objXML = CreateObject("MSXML2.XMLHTTP")
objXML.Open "POST", "www.example.com/api?" & strData, False
objXML.Send
strResponse = objXML.responsetext
MsgBox strResponse
End Sub
如果您需要将您的输入 xml 作为消息正文发送,那么您可以这样做。您可能需要添加更多或更改请求标头以使其为您工作。
使用 DOMDocument 对象可以轻松处理您的 xml 文档。
添加项目引用;
例子:
Dim xmlInput As String
xmlInput = "<YourXmlRequest></YourXmlPayload>"
Dim oXmlHttp As MSXML2.XMLHTTP60
Set oXmlHttp = New MSXML2.XMLHTTP60
oXmlHttp.Open "POST", serviceURL, False, "UserName", "Password"
oXmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
oXmlHttp.setRequestHeader "Connection", "Keep-Alive"
oXmlHttp.setRequestHeader "Accept-Language", "en"
oXmlHttp.send xmlInput
Debug.Print oXmlHttp.responseText
Dim oXmlReturn As MSXML2.DOMDocument60
Set oXmlReturn = New MSXML2.DOMDocument60
oXmlReturn.loadXML oXmlHttp.responseText
这就是我最终使用的:
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
objHTTP.Open "POST", urlPath, False
objHTTP.setRequestHeader "Content-Type", "text/xml"
objHTTP.send (request)
我建议WinHttp.WinHttpRequest.5.1
不要MSXML2.XMLHTTP
在需要 Windows 身份验证时使用,因为它允许您使用当前用户凭据登录。这是一个例子
Dim http As Object
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
http.SetAutoLogonPolicy 0
http.Open "POST", "http://myUrl.html?param1=value1", False
http.setRequestHeader "Content-Type", "text/json"
http.setRequestHeader "User-Agent", "Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405"
http.send ("")