2015-11-13 138 views
2

我試圖從Excel中的VBA應用程序發送JSON對象。下面的代碼正確地發送請求,但我不知道如何使用正文中的JSON對象進行請求。發送JSON對象作爲POST請求

Sub Post() 

    Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") 
    URL = "http://localhost:3000/test" 
    objHTTP.Open "POST", URL, False 
    objHTTP.setRequestHeader "Content-type", "application/x-www-form-  urlencoded" 
    objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" 
    objHTTP.send ("test=6") 

End Sub 

如果我嘗試例如發送「{測試:6,測試2:7}」和日誌我得到{服務器上的請求的主體「{部分:6,測試:7}」: ''}

回答

3

正如你可能已經知道的那樣,JSON結構確實會產生嚴重的問題。在你的情況下,我會說所有關於報價,如你在here中看到的,如果你嘗試驗證你的{test:6, test2: 7}

請嘗試下面的代碼。它看起來似乎對我來說:

Sub Post() 

Dim URL As String, JSONString As String, objHTTP as Object 

    Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") 
    URL = "http://localhost:3000/test" 
    objHTTP.Open "POST", URL, False 
    objHTTP.setRequestHeader "Content-type", "application/x-www-form-  urlencoded" 
    objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" 

    JSONString = "{""test"": 6,""test2"":7}" 

    objHTTP.Send JSONString 

End Sub 
+0

謝謝!這確實最終解決了問題。在此之前,我不得不將內容類型頭部更改爲application/json,並添加一個內容長度字段以擺脫400錯誤。 – mattc19