httr/curl中的SSL连接错误
我正试图使用httr/curl中的SSL连接错误,r,httr,R,Httr,我正试图使用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()的输
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()
的输出:
在终端,如果我运行curl config--version
我会得到
libcurl 7.35.0
更新:我尝试过的事情
- 确认这是适用于Ubuntu 14.04的libcurl3的最新版本
- 使用中的
检查ssl证书openssl
- 已卸载/重新安装的
,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())
curl::curl\u fetch\u内存中出错(url,handle=handle):
SSL连接错误
与
httr::GET()相同https://api.openaq.org/v1/countries,httr::verbose(ssl=TRUE))
ssl握手失败。一些潜在原因:
- 您使用gnutls而不是openssl编译。尝试:
apt get install libcurl4 openssl dev
- 您的libcurl已经过时,不支持服务器所需的TLS版本李>
- 解决了这个问题(在@Jeroen和的帮助下)
首先,我在终端中运行了以下操作:
然后在R中卸载并重新安装sudo apt get安装libcurl4 openssl dev
:curl
我也遇到了这个问题。在命令行中使用curl似乎可以很好地工作,但在R中不行。根据install.packages(“curl”)
我使用的是7.22.0版。我无法重现这一点。这个错误还在发生吗?我怀疑SSLv3有问题。你能把curl\u version()
谢谢@Jeroen。是的,我可以确认这是由于使用GnuTLS而不是OpenSSL时出现了一些问题。这个问题发生在我的笔记本电脑上,它使用的是curl包0.9.5和curl版本7.22.0,其中curl::curl\u fetch\u内存(“https://api.openaq.org/v1/countries“,新句柄(verbose=T))
显示它使用的是GnuTLS/2.12.14。在另一台具有相同curl包和版本的机器上,这一切似乎都是正常的,但是使用了OpenSSL/1.0.1。我想知道为什么。谢谢你,它帮助了我。curl\u version()$ssl\u version
libcurl 7.35.0