| HttpClient {crul} | R Documentation |
HTTP client
url |
(character) A url. One of |
opts |
(list) curl options, a named list. See
|
proxies |
an object of class |
headers |
(list) a named list of headers |
handle |
A handle, see |
Methods
get(path, query, disk, stream, ...)Make a GET request
post(path, query, body, disk, stream, ...)Make a POST request
put(path, query, body, disk, stream, ...)Make a PUT request
patch(path, query, body, disk, stream, ...)Make a PATCH request
delete(path, query, body, disk, stream, ...)Make a DELETE request
head(path, query, ...)Make a HEAD request
Possible parameters (not all are allowed in each HTTP verb):
path - URL path, appended to the base URL
query - query terms, as a named list
body - body as an R list
encode - one of form, multipart, json, or raw
disk - a path to write to. if NULL (default), memory used.
See curl::curl_fetch_disk() for help.
stream - an R function to determine how to stream data. if
NULL (default), memory used. See curl::curl_fetch_stream()
for help
... curl options, only those in the acceptable set from
curl::curl_options() except the following: httpget, httppost,
post, postfields, postfieldsize, and customrequest
curl handles are re-used on the level of the connection object, that is,
each HttpClient object is separate from one another so as to better
separate connections.
a little quark about crul is that because user agent string can
be passed as either a header or a curl option (both lead to a User-Agent
header being passed in the HTTP request), we return the user agent
string in the request_headers list of the response even if you
pass in a useragent string as a curl option. Note that whether you pass
in as a header like User-Agent or as a curl option like useragent,
it is returned as request_headers$User-Agent so at least accessing
it in the request headers is consistent.
post-requests, delete-requests, http-headers, writing-options, cookies
(x <- HttpClient$new(url = "https://httpbin.org"))
x$url
(res_get1 <- x$get('get'))
res_get1$content
res_get1$response_headers
res_get1$parse()
(res_get2 <- x$get('get', query = list(hello = "world")))
res_get2$parse()
library("jsonlite")
jsonlite::fromJSON(res_get2$parse())
# post request
(res_post <- x$post('post', body = list(hello = "world")))
## empty body request
x$post('post')
# put request
(res_put <- x$put('put'))
# delete request
(res_delete <- x$delete('delete'))
# patch request
(res_patch <- x$patch('patch'))
# head request
(res_head <- x$head())
# query params are URL encoded for you, so DO NOT do it yourself
## if you url encode yourself, it gets double encoded, and that's bad
(x <- HttpClient$new(url = "https://httpbin.org"))
res <- x$get("get", query = list(a = 'hello world'))