使用 httr 或 RCurl 获取 URL header 信息
Get URL header information using httr or RCurl
我无法从 R 获取 url header 信息。
httr
使用 httr
包中的 HEAD
:
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
我 re-installed curl/httr 包,但我仍然有同样的错误。
RCurl
使用RCurl
我可以获得header(在详细模式下)但我得到另一个错误:
getURI(ur,header=TRUE,verbose=TRUE)
我得到:
Error in curlPerform(curl = curl, .opts = opts, .encoding = .encoding) :
embedded nul in string:
curl
在终端中使用 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
意味着 curl 在我的机器上安装得很好,当我尝试从 R 做同样的事情时,有点东西磨损了。
欢迎任何帮助。谢谢。
编辑
看起来问题取决于配置系统。我的是
R version 3.3.2 (2016-10-31)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.1 LTS
哇。这很烦人。在我们俩在聊天会话中尝试了很多东西之后,结果证明关键是不让 httr
→ curl
→ openssl
自动协商 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"
我无法从 R 获取 url header 信息。
httr
使用 httr
包中的 HEAD
:
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
我 re-installed curl/httr 包,但我仍然有同样的错误。
RCurl
使用RCurl
我可以获得header(在详细模式下)但我得到另一个错误:
getURI(ur,header=TRUE,verbose=TRUE)
我得到:
Error in curlPerform(curl = curl, .opts = opts, .encoding = .encoding) :
embedded nul in string:
curl
在终端中使用 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
意味着 curl 在我的机器上安装得很好,当我尝试从 R 做同样的事情时,有点东西磨损了。
欢迎任何帮助。谢谢。
编辑
看起来问题取决于配置系统。我的是
R version 3.3.2 (2016-10-31)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.1 LTS
哇。这很烦人。在我们俩在聊天会话中尝试了很多东西之后,结果证明关键是不让 httr
→ curl
→ openssl
自动协商 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"