我尝试设置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,但我想尽可能避免这种情况,因为它需要每年重新注册。