我有權訪問API。該API將XML帖子作爲輸入,然後用相關數據返回XML響應。從Excel和分析結果中執行HTTP發佈
我想
- 發送HTTP發送到服務器(認證,請求將被髮送在一起)
- 接收響應(其中一個選項要返回的CSV或XML)
- 將數據插入適當的行和列,然後使用數據透視表執行數據分析。
我沒有在Excel編程背景,但我坦然面對不同的Web腳本語言,HTML,CSS,Javascript代碼等
任何想法?
我有權訪問API。該API將XML帖子作爲輸入,然後用相關數據返回XML響應。從Excel和分析結果中執行HTTP發佈
我想
我沒有在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 ("")
這看起來不錯。但是,我試圖理清我需要引用的內容,以便我可以使用這些變量類型。 「XMLHTTP」...等 – Scott 2009-12-18 18:11:00
它看起來像我需要包括Microsoft XML? – Scott 2009-12-18 18:14:31