VBA JSON POST有效负载问题

时间:2018-03-13 01:38:33

标签: json vba post

我尝试设置API请求以从Bureau of Labor Statistics提取数据。我成功地使用get请求获取数据,只输入url和系列(如第一个代码示例所示)。这很好用,我能够使用Tim Hall的VBA-JSON转换器解析JSON并处理数据。我的问题是get方法只返回3年的数据,而且我想获得比需要post方法更多的数据。

Sub GetCPItable()
Dim objhttp As Object
Dim strUrl As String

strUrl = "https://api.bls.gov/publicAPI/v1/timeseries/data/CUUR0000SA0"

Set objhttp = CreateObject("MSXML2.XMLHTTP")
    With objhttp
        .Open "get", strUrl, False
        .Send
    End With
MsgBox objhttp.ResponseText
End Sub

似乎(带着一粒盐,这是我第一次使用api服务器),就像VBA没有通过我的有效载荷一样。我已经检查了我的有效负载here,并且JSON语法看起来是正确的,并且根据我首次链接到的页面似乎是正确的语法。然而,我从api服务器收到的唯一的东西是404找不到错误。我一直在尝试不同的东西来拼凑我从源代码示例(没有VBA课程)整天丢失的内容以及网上和其他地方的帖子,并且没有取得任何进展。这是代码的调试版本,它不起作用。

Sub GetCPItable()
Dim objhttp As Object
Dim body As String

'create our URL string and pass the user entered information to it
Dim strUrl As String

    strUrl = "https://api.bls.gov/publicAPI/v1/timeseries/data"

Set objhttp = CreateObject("MSXML2.XMLHTTP")
    With objhttp
        .Open "POST", strUrl, False
        .SetRequestHeader "Content-type", "application/json"
        body = "{""seriesid"":""CUUR0000SA0""],""startyear"":""2008"",""endyear"":""2012""}"
        .Send (body)
    End With
MsgBox objhttp.ResponseText
End Sub 

这是我得到的错误:

    : responseText : "{
   "status": "REQUEST_FAILED",
   "responseTime": 0,
   "message": [
                    "404 Error - Page Not Found"
   ],
   "Results": [  ]
}" : String

非常感谢任何帮助。我唯一能想到的就是使用V2 API,但我想尽可能避免这种情况,因为它需要每年重新注册。

0 个答案:

没有答案