Curl означает несколько вещей http://daniel.haxx.se/docs/curl-vs-libcurl.html. Проблема здесь в том, что вы смотрите на то, что делает инструмент командной строки curl, и вместо этого хотите спросить, как библиотека libcurl реализует что-то.
RCURL использует библиотеку libcurl. К этому можно обратиться через api. «Символы», используемые в api, перечислены здесь http://curl.haxx.se/libcurl/c/symbols-in-versions.html. Мы можем сравнить их с параметрами, перечисленных RCurl
:
library(RCurl)
cInfo <- getURL("http://curl.haxx.se/libcurl/c/symbols-in-versions.html")
cInfo <- unlist(strsplit(cInfo, "\n"))
cInfo <- cInfo[grep("CURLOPT_", cInfo)]
cInfo <- gsub("([^[\\s]]*)\\s.*", "\\1", cInfo)
cInfo <- gsub("CURLOPT_", "", cInfo)
cInfo <- tolower(gsub("_", ".", cInfo))
listCurlOptions()[!listCurlOptions()%in%cInfo]
Из сказанного выше мы видим, что все варианты RCurl получены из Libcurl символов API. CURLOPT_
удален _
заменен на .
, а буквы понижены до нижнего регистра.
Возникает вопрос, какие символы представляют символы. Обычно я просто смотрю на документацию библиотеки php , чтобы узнать об этом. http://php.net/manual/en/function.curl-setopt.php списков
CURLOPT_SSLVERSION The SSL version (2 or 3) to use. By default PHP will try to determine this itself, although in some cases this must be set manually.
как целый тип. ожидая значения 2 или 3.
В качестве альтернативы вы можете посмотреть справочную страницу curl_easy_setopt
http://curl.haxx.se/libcurl/c/curl_easy_setopt.html.
CURLOPT_SSLVERSION
Pass длинный в качестве параметра для управления, какую версию SSL/TLS, чтобы попытаться использовать. Доступные опции:
CURL_SSLVERSION_DEFAULT
действие по умолчанию.Это попытается выяснить версию удаленного протокола SSL, то есть либо SSLv3, либо TLSv1 (но не SSLv2, который по умолчанию отключен с 7.18.1).
CURL_SSLVERSION_TLSv1
Force TLSv1
CURL_SSLVERSION_SSLv2
Force SSLv2
CURL_SSLVERSION_SSLv3
Force SSLv3
Он говорит, что мы должны были бы пройти длинный с ва lue CURL_SSLVERSION_SSLv3
, чтобы указать sslv3. Какая ценность CURL_SSLVERSION_SSLv3
? Мы можем исследовать RCurl:::SSLVERSION_SSLv3
> c(RCurl:::SSLVERSION_DEFAULT, RCurl:::SSLVERSION_TLSv1, RCurl:::SSLVERSION_SSLv2, RCurl:::SSLVERSION_SSLv3)
[1] 0 1 2 3
>
Так ведь допустимые значения для sslversion являются 0,1,2 или 3.
Так что путаница в этом случае возникла из локонов программы, которая предположительно использует Libcurl API, реализующий это бинарным способом.
Так правильный способ в этом случае, чтобы использовать эту опцию, будет:
postForm(url, .opts = list(sslversion = 3))
or
postForm(url, .opts = list(sslv = 3))
вы можете использовать более короткий sslv
, как .opts
передается mapCurlOptNames
, который будет использовать pmatch
найти sslversion
.
Чтобы быть справедливым к автору RCurl
это все объяснено в http://www.omegahat.org/RCurl/philosophy.html также расположенный в /RCurl/inst/doc/philosophy.html
.AN отрывок гласит:
Each of these and what it controls is described in the libcurl man(ual) page for curl_easy_setopt and that is the authoritative documentation. Anything we provide here is merely repetition or additional explanation.
The names of the options require a slight explanation. These correspond to symbolic names in the C code of libcurl. For example, the option url in R corresponds to CURLOPT_URL in C. Firstly, uppercase letters are annoying to type and read, so we have mapped them to lower case letters in R. We have also removed the prefix "CURLOPT_" since we know the context in which they option names are being used. And lastly, any option names that have a _ (after we have removed the CURLOPT_ prefix) are changed to replace the '_' with a '.' so we can type them in R without having to quote them. For example, combining these three rules, "CURLOPT_URL" becomes url and CURLOPT_NETRC_FILE becomes netrc.file. That is the mapping scheme.
Чрезвычайно тщательный ответ. Благодаря! –