request
function
org.httpkit.client/request
(request [{:keys [client timeout connect-timeout idle-timeout filter worker-pool keepalive as follow-redirects max-redirects response trace-redirects allow-unsafe-redirect-methods proxy-host proxy-port proxy-url tunnel? deadlock-guard? auto-compression? insecure? nested-param-style], :as opts, :or {auto-compression? true, idle-timeout 60000, proxy-port -1, tunnel? false, response (promise), follow-redirects true, proxy-url nil, as :auto, deadlock-guard? true, proxy-host nil, max-redirects 10, keepalive 120000, filter IFilter/ACCEPT_ALL, connect-timeout 60000}} & [callback]])Issues an async HTTP request and returns a promise object to which the value
of `(callback {:opts _ :status _ :headers _ :body _})` or
`(callback {:opts _ :error _})` will be delivered.
The latter will be delivered on client errors only, not on http errors which will be
contained in the :status of the first.
;; Asynchronous GET request (returns a promise)
(request {:url "http://www.cnn.com"})
;; Asynchronous GET request with callback
(request {:url "http://www.cnn.com" :method :get}
(fn [{:keys [opts status body headers error] :as resp}]
(if error
(println "Error on" opts)
(println "Success on" opts))))
;; Synchronous requests
@(request ...) or (deref (request ...) timeout-ms timeout-val)
;; Issue 2 concurrent requests, then wait for results
(let [resp1 (request ...)
resp2 (request ...)]
(println "resp1's status: " (:status @resp1))
(println "resp2's status: " (:status @resp2)))
Returned body type is controlled by `:as` option:
Without automatic unzipping:
`:none` - org.httpkit.DynamicBytes
`:raw-byte-array` - bytes[]
With automatic unzipping:
`:byte-array` - bytes[]
`:stream` - ByteInputStream
`:text` - String (charset based on Content-Type header)
`:auto` - As `:text` or `:stream` (based on Content-Type header)
Request options:
:url :method :headers :timeout :connect-timeout :idle-timeout :query-params
:as :form-params :client :body :basic-auth :user-agent :filter :worker-pool
:nested-param-style - ∈ #{:comma-separated :array :indexed nil} (default nil)
Examples
No examples yet. Be the first to add one!