Handles are the work horses of libcurl. A handle is used to configure a
request with custom options, headers and payload. Once the handle has been
set up, it can be passed to any of the download functions such as curl
,curl_download
or curl_fetch_memory
. The handle will maintain
state in between requests, including keep-alive connections, cookies and
settings.
new_handle(...) handle_setopt(handle, ..., .list = list()) handle_setheaders(handle, ..., .list = list()) handle_getheaders(handle) handle_getcustom(handle) handle_setform(handle, ..., .list = list()) handle_reset(handle) handle_data(handle)
... | named options / headers to be set in the handle.
To send a file, see |
---|---|
handle | Handle to modify |
.list | A named list of options. This is useful if you've created
a list of options elsewhere, avoiding the use of |
A handle object (external pointer to the underlying curl handle). All functions modify the handle in place but also return the handle so you can create a pipeline of operations.
Use new_handle()
to create a new clean curl handle that can be
configured with custom options and headers. Note that handle_setopt
appends or overrides options in the handle, whereas handle_setheaders
replaces the entire set of headers with the new ones. The handle_reset
function resets only options/headers/forms in the handle. It does not affect
active connections, cookies or response data from previous requests. The safest
way to perform multiple independent requests is by using a separate handle for
each request. There is very little performance overhead in creating handles.
Other handles:
handle_cookies()
h <- new_handle() handle_setopt(h, customrequest = "PUT") handle_setform(h, a = "1", b = "2") r <- curl_fetch_memory("http://httpbin.org/put", h) cat(rawToChar(r$content))#> { #> "args": {}, #> "data": "", #> "files": {}, #> "form": { #> "a": "1", #> "b": "2" #> }, #> "headers": { #> "Accept": "*/*", #> "Accept-Encoding": "deflate, gzip", #> "Content-Length": "228", #> "Content-Type": "multipart/form-data; boundary=------------------------45a9be4daaa155a9", #> "Host": "httpbin.org", #> "User-Agent": "R (3.6.1 x86_64-apple-darwin15.6.0 x86_64 darwin15.6.0)" #> }, #> "json": null, #> "origin": "145.136.143.132, 145.136.143.132", #> "url": "https://httpbin.org/put" #> }# Or use the list form h <- new_handle() handle_setopt(h, .list = list(customrequest = "PUT")) handle_setform(h, .list = list(a = "1", b = "2")) r <- curl_fetch_memory("http://httpbin.org/put", h) cat(rawToChar(r$content))#> { #> "args": {}, #> "data": "", #> "files": {}, #> "form": { #> "a": "1", #> "b": "2" #> }, #> "headers": { #> "Accept": "*/*", #> "Accept-Encoding": "deflate, gzip", #> "Content-Length": "228", #> "Content-Type": "multipart/form-data; boundary=------------------------4f87aed0e5d9205a", #> "Host": "httpbin.org", #> "User-Agent": "R (3.6.1 x86_64-apple-darwin15.6.0 x86_64 darwin15.6.0)" #> }, #> "json": null, #> "origin": "145.136.143.132, 145.136.143.132", #> "url": "https://httpbin.org/put" #> }