我可以使用终端上的“curl”访问API数据,但是当我使用R时会出现错误。寻找一些建议
卷曲命令:
curl -H“token:jQyrbzexeCEaWFIDBAwCWqbrkrVQTVhM”“https://www.ncdc.noaa.gov/cdo-web/api/v2/datasets”
R命令:
books_key < - “&token = jQyrbzexeCEaWFIDBAwCWqbrkrVQTVhM”
url < - “https://www.ncdc.noaa.gov/cdo-web/api/v2/datasets”
req < - fromJSON(paste0(url,books_key))
open.connection出错(con,“rb”):HTTP错误400.通常当URL中有空格(来自其他类似问题)时会出现此错误,但在我的情况下,URL中没有空格
关于使用来自网站https://www.ncdc.noaa.gov/cdo-web/webservices/v2#gettingStarted 的令牌的一些信息
不是R问题,因为下面的另一个网站的例子工作
movie_key < - “&api-key = b75da00e12d54774a2d362adddcc9bef”
url < - “http://api.nytimes.com/svc/movies/v2/reviews/dvd-picks.json?order=by-date”
req < - fromJSON(paste0(url,movie_key))
您应该将令牌作为标头而不是查询参数传递,例如与crul
pkg
cli <- crul::HttpClient$new(
url = "https://www.ncdc.noaa.gov",
headers = list(token = "yourtoken"))
cli$get(path = "cdo-web/api/v2/datasets")
快速浏览一下你的Curl和你的R调用 - 在Curl中你将令牌作为头部变量传递,在R调用中它似乎是一个查询变量。
此外,NYT调用在URI中有一个查询参数,因此适用于R调用。