Set values for the CURL options
curlSetOpt.RdThis function allows us to set values for the
possible options in the CURL data structure
that defines the HTTP request.
These options persist across calls in the
CURLHandle object.
Usage
curlSetOpt(..., .opts = list(), curl = getCurlHandle(),
.encoding = integer(), .forceHeaderNames = FALSE,
.isProtected = FALSE)Arguments
- ...
a named list of curl options to set after the handle has been created.
- .opts
a named list or
CURLOptionsobject identifying the curl options for the handle.- curl
the
CURLHandleobject created earlier via a call togetCurlHandleordupCurlHandle- .encoding
an integer or a string that explicitly identifies the encoding of the content that is returned by the HTTP server in its response to our query. The possible strings are ‘UTF-8’ or ‘ISO-8859-1’ and the integers should be specified symbolically as
CE_UTF8andCE_LATIN1. Note that, by default, the package attempts to process the header of the HTTP response to determine the encoding. This argument is used when such information is erroneous and the caller knows the correct encoding.- .forceHeaderNames
a logical value which if
TRUEallows the caller to explicitly indicate that the HTTPHEADER option needs to have the names prefixed to the strings. This removes any ambiguity caused by the presence of ':' in the values appearing to be the separator between the name and the value of thename: valuepairs of the HTTP header.- .isProtected
a logical vector (or value that is repeated) specifying which of the values in ... and
.optsneed to be explicitly protected from garbage collection or not. The basic idea is that we specifyFALSEif the value being set for the curl option may be garbage collected before thecurlhandle is garbage collected. This would leave thecurlobject in an inconsistent state, referring to an R object (i.e. an R function), which may be used after the R object has been garbage collected.
Value
An integer value giving the status of the return. This should be 0 as if there was an error in the libcurl mechiansim, we will throw it there.
References
Curl homepage https://curl.se/
Examples
tryCatch({
curl = getCurlHandle()
# Note the header that extends across two lines with the second line
# prefixed with white space.
curlSetOpt( .opts = list(httpheader = c(Date = "Wed, 1/2/2000 10:01:01",
foo="abc\n extra line"), verbose = TRUE),
curl = curl)
ans = getURL("https://r-project.org", curl = curl)
}, GenericCurlError = identity)