httr / curl中的SSL连接错误

时间:2016-01-28 07:56:17

标签: 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()的输出:

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
  • 中的curl检查了ssl证书
  • 已卸载/重新安装RCurlhttrcurl -v "https://api.openaq.org/v1/countries"
  • 确认此 DOES 在终端上工作:

curl

我无法理解命令行卷曲如何正常工作,但R中的verbose失败

更多更新 - httr不起作用

我尝试通过要求 httr::GET("https://api.openaq.org/v1/countries", httr::verbose()) Error in curl::curl_fetch_memory(url, handle = handle) : SSL connect error 详细来从R获取更多信息。它产生相同的错误:

httr::GET("https://api.openaq.org/v1/countries", httr::verbose(ssl=TRUE))/

相同

2 个答案:

答案 0 :(得分:7)

解决了这个问题(在@Jeroen和richfitz的帮助下)

首先,我在终端中运行了以下内容:

sudo apt-get install libcurl4-openssl-dev

然后在R:

中卸载并重新安装curl

install.packages("curl")

答案 1 :(得分:5)

SSL握手失败。一些可能的原因:

  • 您使用gnutls而不是openssl编译。尝试:apt-get install libcurl4-openssl-dev
  • 您的libcurl确实已过时,不支持服务器所需的TLS版本。