использование Rcurl с HTTP - PullRequest
       12

использование Rcurl с HTTP

9 голосов
/ 18 июля 2011

Я попробовал следующий код в R на Windows:

library(RCurl)
postForm("https://www.google.com/accounts/ClientLogin/",
    "email" = "me@gmail.com",
    "Passwd" = "abcd",
    "service" = "finance",
    "source" = "Test-1"
)

но идёт следующая ошибка:

Error in postForm()
SL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

Как настроить RCurl, чтобы разрешить использование HTTP?

Ответы [ 2 ]

13 голосов
/ 24 мая 2013

просто добавьте .opts = list (ssl.verifypeer = FALSE) к вашему запросу

postForm("https://www.google.com/accounts/ClientLogin/",
    "email" = "me@gmail.com",
    "Passwd" = "abcd",
    "service" = "finance",
    "source" = "Test-1",
    .opts = list(ssl.verifypeer = FALSE))
11 голосов
/ 25 ноября 2011

Вам необходимо установить библиотеку SSL.

  1. Для Windows вы можете получить ее здесь: Скачать "OpenSSL для Windows" версия 0.9.8k

  2. Разархивируйте во временную папку и скопируйте файлы "libeay32.dll" и "ssleay32.dll" из подпапки "bin" в R \ library \ RCurl \ lib \ i386.

  3. Также вы можете скопировать его в тот же каталог, что и R.exe.

  4. Затем проверьте, есть ли у вас доступ к протоколу https:

    library(RCurl)
    curlVersion()$protocol 
    ## [1] "tftp"   "ftp"    "telnet" "dict"   "ldap"   "http"   "file"   "https"     
    ## [9] "ftps"   "scp"    "sftp"  
    
  5. Затем установите новый набор файлов учетных данных:

    ca-bundle.crt можно найти по адресу: http://curl.haxx.se/ca/cacert.pem

    переименовать /скопировать в ca-bundle.crt

  6. Тест с этим:

    getURL("https://www.google.com/accounts/ClientLogin/?service=finance&email=me@gmail.com&Passwd=abcd&source=Test-1", 
           cainfo = "path to R/library/RCurl/CurlSSL/ca-bundle.crt")
    
...