Start an HTTP POST request in the background, and report its completion via a deferred value.
URL to connect to.
Data to send. Either a raw vector, or a character string
that will be converted to raw with base::charToRaw. At most one of
data
, data_file
and data_form
can be non NULL
.
Data file to send. At most one of data
, data_file
and data_form
can be non NULL
.
Form data to send. A name list, where each element
is created with either curl::form_data()
or curl::form_file()
.
At most one of data
, data_file
and data_form
can be non NULL
.
HTTP headers to send.
If not NULL
, it must be a string, specifying a file.
The body of the response is written to this file.
Options to set on the handle. Passed to
curl::handle_setopt()
.
Progress handler function. It is only used if the
response body is written to a file. See details at http_get()
.
An async HTTP deferred object is also an event emitter, see
http_get()
for details, and also event_emitter.
json <- jsonlite::toJSON(list(baz = 100, foo = "bar"))
do <- function() {
headers <- c("content-type" = "application/json")
http_post("https://eu.httpbin.org/post", data = json, headers = headers)$
then(http_stop_for_status)$
then(function(x) {
jsonlite::fromJSON(rawToChar(x$content))$json
})
}
synchronise(do())
#> $baz
#> [1] 100
#>
#> $foo
#> [1] "bar"
#>