http_get | R Documentation |
Start an HTTP GET request in the background, and report its completion via a deferred.
http_get(
url,
headers = character(),
file = NULL,
options = list(),
on_progress = NULL
)
url |
URL to connect to. |
headers |
HTTP headers to send. |
file |
If not |
options |
Options to set on the handle. Passed to
|
on_progress |
Progress handler function. It is only used if the response body is written to a file. See details below. |
Deferred object.
An async HTTP deferred object is also an event emitter, see
event_emitter. Use $event_emitter
to access the event emitter API,
and call $event_emitter$listen_on()
etc. to listen on HTTP events,
etc.
"data"
is emitted when we receive data from the server, the data is
passed on to the listeners as a raw vector. Note that zero-length
raw vectors might also happen.
"end"
is emitted at the end of the HTTP data stream, without
additional arguments (Also on error.)
Here is an example, that uses the web server from the webfakes package:
http <- webfakes::new_app_process(webfakes::httpbin_app()) stream_http <- function() { query <- http_get(http$url("/drip?duration=3&numbytes=10")) query$event_emitter$ listen_on("data", function(bytes) { writeLines(paste("Got", length(bytes), "byte(s):")) print(bytes) })$ listen_on("end", function() { writeLines("Done.") }) query } response <- synchronise(stream_http())
http_get
can report on the progress of the download, via the
on_progress
argument. This is called with a list, with entries:
url
: the specified url to download
handle
: the curl handle of the request. This can be queried using
curl::handle_data()
to get the response status_code, the final
URL (after redirections), timings, etc.
file
: the file
argument.
total
: total bytes of the response. If this is unknown, it is set
to zero.
current
: already received bytes of the response.
Other asyncronous HTTP calls:
http_head()
,
http_setopt()
afun <- async(function() {
http_get("https://eu.httpbin.org/status/200")$
then(function(x) x$status_code)
})
synchronise(afun())
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.