RCurl::getURL 有效,httr::GET 从对端接收数据时失败

Posted

技术标签:

【中文标题】RCurl::getURL 有效,httr::GET 从对端接收数据时失败【英文标题】:RCurl::getURL works, httr::GET has Failure when receiving data from the peer 【发布时间】:2019-01-03 23:38:18 【问题描述】:

我正在构建一些函数来从需要基本身份验证的网站(在本例中为 Workday)提取 csv 文件。我注意到 httr 没有按预期执行

当我使用以下内容时,

httr::GET('https://wd5-services1.myworkday.com/ccx/service/')

我收到此错误

Error in curl::curl_fetch_memory(url, handle = handle) : 
  Failure when receiving data from the peer

当我使用时

RCurl::getURL('https://wd5-services1.myworkday.com/ccx/service/') 

我得到以下结果(这是我想要的结果!)

[1] "500 : Invalid request"

我的问题是为什么 httr 出错,当 RCurl(和 cmd line curl 也是)返回正确的 http 错误时?

【问题讨论】:

更新。看起来 Worday 更新了他们的 SSL 证书。当我现在使用RCurl::getURL() 时,我得到了error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure,但是当我使用httr::GET() 时,我现在得到了正确的结果。所以curl_fetch_memory() 错误一定与 SSL 密码有关。我只是不知道是什么。 【参考方案1】:

对我来说httr:GET 工作正常。无论如何,您可以在 github 上提交错误:https://github.com/r-lib/httr。请务必提供操作系统等其他信息。

httr::GET('https://wd5-services1.myworkday.com/ccx/service/')
#> Response [https://wd5-services1.myworkday.com/ccx/service/]
#>   Date: 2018-09-23 11:09
#>   Status: 500
#>   Content-Type: text/plain
#>   Size: 21 B

由reprex package (v0.2.1) 于 2018 年 9 月 23 日创建

【讨论】:

感谢我在这里提交问题github.com/r-lib/httr/issues/568

以上是关于RCurl::getURL 有效,httr::GET 从对端接收数据时失败的主要内容,如果未能解决你的问题,请参考以下文章

最高有效位基数排序如何比最低有效位基数排序更有效?

PDF都是自动7天有效期吗,如何设置永久有效的PDF文件?

保留两位有效数字是什么意思

如何保留两位有效数字?

安卓数据库数据有效时间

cout 输出固定位数的有效数字