[英]how to get data from the WTO API in R
library(httr)
library(jsonlite)
headers = c(
# Request headers
'Ocp-Apim-Subscription-Key' = '{subscription key}'
)
params = list()
# Request parameters
params['countries[]'] = '{array}'
resp <- GET(paste0("https://api.wto.org/tfad/transparency/procedures_contacts_single_window?"
, paste0(names(params),'=',params,collapse = "&")),
add_headers(headers))
if(!http_error(resp)){
jsonRespText<-fromJSON(rawToChar(content(resp,encoding = 'UTF-8')))$Dataset
jsonRespText
}else{
stop('Error in Response')
}
我不知道如何从 R 中的 API 获得响应。 我已经执行了这段代码,但服务器没有响应......
如果您在运行代码后检查resp
的 object 的值,您会注意到一个状态代码:
> resp
Response [https://tfadatabase.org/api/transparency/procedures_contacts_single_window?countries[]=%7Barray%7D]
Date: 2020-04-17 19:25
Status: 422
Content-Type: application/json
Size: 77 B
所以服务器实际上确实响应了,它只是没有给你你所希望的。 在 API 文档中,我们可以查找以下代码:
422 无法处理的实体
如果找不到成员,或者请求参数格式不正确。
所以我只是去查询生成器并寻找一个有效的请求 URL 并更新了代码。 它运行良好 - 即状态 200。
这是我在代码中使用的 URL:
https://api.wto.org/timeseries/v1/data?i=TP_A_0100&r=000&fmt=json&mode=full&lang=1&meta=false
resp
的值是
Date: 2020-04-17 19:30
Status: 200
Content-Type: application/json; charset=utf-8
Size: 88 B
我在上面的结果中删除了订阅密钥。 您可以在此处找到查询生成器。 顺便说一句,在查询生成器中,它会自动在 URL 中包含订阅密钥和其他“标题”信息。 您可以先将其删除,然后将其重新添加到您的代码中,或者只需更改您的代码以直接在其 URL 版本上运行GET()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.