excel 将JSON对象作为POST请求发送

e5nqia27  于 2023-05-30  发布在  其他
关注(0)|答案(2)|浏览(142)

我正在尝试从Excel中的VBA应用程序发送JSON对象。下面的代码正确地发送了请求,但是我不知道如何在主体中使用JSON对象发出请求。

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

例如,如果我尝试发送"{test:6, test2: 7}"并在服务器上记录请求的正文,则会得到{ '{parts:6, test: 7}': '' }

tv6aics1

tv6aics11#

正如你可能已经知道的,JSON结构确实会产生严重的问题。在您的例子中,我会说这都是关于引号的,如果您尝试验证您的{test:6, test2: 7},您可以在here中看到。
尝试下面的代码。在我看来似乎是合理的:

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/json"
        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
lnlaulya

lnlaulya2#

如果其他人正在为POSTS而挣扎,在那里你的身体根本不会被发送,特别是当在objHTTP.Send行使用变量而不是文字文本时,这对我来说很有效,经过几个小时的挣扎,尽管我将变量声明为字符串:

objHTTP.Send CStr(YourVariable)

这对我来说不起作用,因为我在其他地方看到过:

objHTTP.Send CStr(YourVariable, vbFromUnicode)

相关问题