【发布时间】:2016-01-28 07:56:16
【问题描述】:
我正在尝试使用 httr 访问开放 API,但没有运气。每当我尝试:
httr::GET("https://api.openaq.org/v1/countries")
我收到以下错误:
Error in curl::curl_fetch_memory(url, handle = handle) :
SSL connect error
但是,其他到 https 的连接也可以正常工作,例如
httr::GET("https://httpbin.org/get")
这是sessionInfo()的输出:
R version 3.2.3 (2015-12-10)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 14.04.3 LTS
locale:
[1] LC_CTYPE=en_CA.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_CA.UTF-8 LC_COLLATE=en_CA.UTF-8
[5] LC_MONETARY=en_CA.UTF-8 LC_MESSAGES=en_CA.UTF-8
[7] LC_PAPER=en_CA.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_CA.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods
[7] base
loaded via a namespace (and not attached):
[1] httr_1.0.0.9000 R6_2.1.2 tools_3.2.3 curl_0.9.5
在终端,如果我运行 curl-config --version 我会得到
libcurl 7.35.0
更新:我尝试过的事情
- 确认这是适用于 Ubuntu 14.04 的 libcurl3 的最新版本
- 使用
openssl检查ssl证书,如this answer - 卸载/重新安装
curl、RCurl和httr - 确认此确实可以从终端工作:
curl -v "https://api.openaq.org/v1/countries"
我无法理解命令行 curl 如何正常工作,但 R 中的 curl 失败
更多更新 -- verbose 不起作用
我尝试通过要求 httr 详细说明从 R 获取更多信息。它产生相同的错误:
httr::GET("https://api.openaq.org/v1/countries", httr::verbose())
Error in curl::curl_fetch_memory(url, handle = handle) :
SSL connect error
与httr::GET("https://api.openaq.org/v1/countries", httr::verbose(ssl=TRUE))相同
【问题讨论】:
-
我也遇到了这个问题。在命令行使用 curl 似乎可以正常工作,但不是来自 R。根据
curl_version(),我使用的是 7.22.0 版本。 -
我无法重现此内容。这个错误还在发生吗?
-
我怀疑 SSLv3 有问题。你能包括
curl::curl_fetch_memory("https://api.openaq.org/v1/countries", new_handle(verbose=T))的输出吗?