2015-11-13 217 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