10

我可以访问 API。API 将 XML 帖子作为输入,然后返回带有相关数据的 XML 响应。

我想要

  1. 将 HTTP Post 发送到服务器(身份验证和请求将一起发送)
  2. 接收响应(要返回的选项之一是 CSV 或 XML)
  3. 将数据插入适当的行和列,然后使用数据透视表执行数据分析。

我没有 excel 编程背景,但对不同的 Web 脚本语言、HTML、CSS、Javascript 等很熟悉。

有任何想法吗?

4

4 回答 4

8

可以使用此 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
于 2009-11-30T18:26:46.983 回答
8

如果您需要将您的输入 xml 作为消息正文发送,那么您可以这样做。您可能需要添加更多或更改请求标头以使其为您工作。

使用 DOMDocument 对象可以轻松处理您的 xml 文档。

添加项目引用;

  • Microsoft WinHTTP 服务,版本 5.1
  • 微软 XML,v6.0

例子:

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
于 2009-12-02T14:03:14.780 回答
3

这就是我最终使用的:

Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
objHTTP.Open "POST", urlPath, False
objHTTP.setRequestHeader "Content-Type", "text/xml"
objHTTP.send (request)
于 2009-12-18T21:47:48.693 回答
2

我建议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 ("")

参考:https ://github.com/VBA-tools/VBA-Web/issues/15

于 2017-10-04T07:14:17.450 回答