使用httr或RCurl

时间:2016-12-30 15:53:57

标签: r curl header rcurl httr

我从R获取url标头信息没有成功。

HTTR

使用HEAD包中的httr

ur <-"https://secure.energyaustralia.com.au/EnergyPriceFactSheets/Docs/EPFS/E_B_V_BEDGE_CI_37_13-10-2016.pdf"
HEAD(ur)

我收到此错误:

Error in curl::curl_fetch_memory(url, handle = handle) : 
  SSL connect error

我重新安装了curl / httr包但我仍然有同样的错误。

RCurl

使用RCurl我可以获取标题(在详细模式下)但我收到另一个错误:

getURI(ur,header=TRUE,verbose=TRUE)

我明白了:

Error in curlPerform(curl = curl, .opts = opts, .encoding = .encoding) : 
  embedded nul in string:

卷曲

在终端中使用curl可以正常工作:

 curl -I https://secure.energyaustralia.com.au/EnergyPriceFactSheets/Docs/EPFS/E_B_V_BEDGE_CI_37_13-10-2016.pdf

我得到了:

HTTP/1.1 200 OK
Content-Length: 237503
Content-Type: application/pdf
Last-Modified: Wed, 14 Dec 2016 05:18:09 GMT
Accept-Ranges: bytes
ETag: "c27d5775c955d21:27a"
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Fri, 30 Dec 2016 15:44:05 GMT

当我尝试从R做同样的事情时,意味着我的机器中的卷曲安装得很好。

欢迎任何帮助。谢谢。

修改

看起来问题取决于配置系统。我的是

R version 3.3.2 (2016-10-31)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.1 LTS

1 个答案:

答案 0 :(得分:1)

哇。这很令人烦恼。在我们两个人在聊天会话中尝试了很多事情之后,事实证明关键是不允许httrcurlopenssl自动协商SSL / TLS连接。在Ubuntu 16.04上可能存在潜在的CA捆绑问题导致此问题,但它可以解决而无需通过以下方式处理:

library(httr)
library(dplyr)

ur <- "https://secure.energyaustralia.com.au/EnergyPriceFactSheets/Docs/EPFS/E_B_V_BEDGE_CI_37_13-10-2016.pdf"

HEAD(ur, config(sslversion=4)) %>%  ## <- this is the magic line
  .$headers %>%
  as_data_frame() %>%
  glimpse()
## Observations: 1
## Variables: 8
## $ content-length <chr> "237503"
## $ content-type   <chr> "application/pdf"
## $ last-modified  <chr> "Wed, 14 Dec 2016 05:18:09 GMT"
## $ accept-ranges  <chr> "bytes"
## $ etag           <chr> "\"c27d5775c955d21:27a\""
## $ server         <chr> "Microsoft-IIS/6.0"
## $ x-powered-by   <chr> "ASP.NET"
## $ date           <chr> "Fri, 30 Dec 2016 19:20:47 GMT"