R运行httr的GET请求时报curl::curl_fetch_memory接收数据失败怎么解决
问题解决指南
报错根因
Failure when receiving data from the peer报错的根因是美国人口普查局的地理编码接口已全面停用HTTP协议,强制要求使用HTTPS请求,原代码中填写的HTTP格式接口地址已经失效。
可直接运行的修正代码
library(httr) # 仅需将原接口地址的http修改为https即可适配当前接口规则 url <- "https://geocoding.geo.census.gov/geocoder/locations/onelineaddress" resp <- GET(url, query=list( address="1600 Pennsylvania Avenue, Washington DC", benchmark="Public_AR_Current", format="json" )) json <- content(resp, type="application/json") json$result$addressMatches[[1]]$coordinates
注意事项
- 除协议调整外,建议
benchmark参数使用官方公开的字符串标识(如Public_AR_Current代表当前最新公共地址参考基准),相比数字ID兼容性更强,不会因为官方版本迭代失效 - 如果修改后仍请求失败,可检查本地网络是否可正常访问美国人口普查局的相关服务,部分地区网络可能存在访问限制
内容的提问来源于stack exchange,提问作者Phlybo
相关产品推荐
相关产品推荐

