发送JSON对象作为POST请求
问题描述:
我试图从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}”: ''}
答
正如你可能已经知道的那样,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
谢谢!这确实最终解决了问题。在此之前,我不得不将内容类型头部更改为application/json,并添加一个内容长度字段以摆脱400错误。 – mattc19