org.httpkit.client

*default-client*

dynamic

Specifies the default HttpClient used by the `request` function.
Value may be a delay.

A common use case is to replace the default (non-SNI-capable) client with
an SNI-capable one, e.g.:

  (:require [org.httpkit.sni-client :as sni-client]) ; Needs Java >= 8

  ;; Change default client for your whole application:
  (alter-var-root #'org.httpkit.client/*default-client* (fn [_] sni-client/default-client))

  ;; or temporarily change default client for a particular thread context:
  (binding [org.httpkit.client/*default-client* sni-client/default-client]
    <...>)

 See also `make-client`.

acl

(acl url & [opts callback])(acl url & [callback])
Issues an async HTTP ACL request. See `request` for details.

copy

(copy url & [opts callback])(copy url & [callback])
Issues an async HTTP COPY request. See `request` for details.

default-client

default-pool

delete

(delete url & [opts callback])(delete url & [callback])
Issues an async HTTP DELETE request. See `request` for details.

get

(get url & [opts callback])(get url & [callback])
Issues an async HTTP GET request. See `request` for details.

head

(head url & [opts callback])(head url & [callback])
Issues an async HTTP HEAD request. See `request` for details.

lock

(lock url & [opts callback])(lock url & [callback])
Issues an async HTTP LOCK request. See `request` for details.

make-client

(make-client {:keys [max-connections address-finder ssl-configurer error-logger event-logger event-names bind-address]})
Returns an HttpClient with specified options:
:max-connections    ; Max connection count, default is unlimited (-1)
:address-finder     ; (fn [java.net.URI]) -> java.net.InetSocketAddress
:ssl-configurer     ; (fn [javax.net.ssl.SSLEngine java.net.URI])
:error-logger       ; (fn [text ex])
:event-logger       ; (fn [event-name])
:event-names        ; {<http-kit-event-name> <loggable-event-name>}
:bind-address       ; when present will pass local address to SocketChannel.bind()

make-ssl-engine

(make-ssl-engine)(make-ssl-engine ctx)
Returns an SSLEngine using default or given SSLContext.

max-body-filter

(max-body-filter size)
reject if response's body exceeds size in bytes

move

(move url & [opts callback])(move url & [callback])
Issues an async HTTP MOVE request. See `request` for details.

options

(options url & [opts callback])(options url & [callback])
Issues an async HTTP OPTIONS request. See `request` for details.

patch

(patch url & [opts callback])(patch url & [callback])
Issues an async HTTP PATCH request. See `request` for details.

post

(post url & [opts callback])(post url & [callback])
Issues an async HTTP POST request. See `request` for details.

propfind

(propfind url & [opts callback])(propfind url & [callback])
Issues an async HTTP PROPFIND request. See `request` for details.

proppatch

(proppatch url & [opts callback])(proppatch url & [callback])
Issues an async HTTP PROPPATCH request. See `request` for details.

put

(put url & [opts callback])(put url & [callback])
Issues an async HTTP PUT request. See `request` for details.

query-string

(query-string m)
Returns URL-encoded query string for given params map.

report

(report url & [opts callback])(report url & [callback])
Issues an async HTTP REPORT request. See `request` for details.

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?], :as opts, :or {idle-timeout 60000, proxy-port -1, tunnel? false, response (promise), follow-redirects true, proxy-url nil, as :auto, deadlock-guard? true, proxy-host nil, worker-pool default-pool, 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.

When unspecified, `callback` is the identity

;; 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)))

Output coercion:
;; Return the body as a byte stream
(request {:url "http://site.com/favicon.ico"; :as :stream})
;; Coerce as a byte-array
(request {:url "http://site.com/favicon.ico"; :as :byte-array})
;; return the body as a string body
(request {:url "http://site.com/string.txt"; :as :text})
;; Try to automatically coerce the output based on the content-type header, currently supports :text :stream, (with automatic charset detection)
(request {:url "http://site.com/string.txt"; :as :auto})
;; return the body as is with no unzipping or coercion whatsoever. returns as org.httpkit.DynamicBytes
(request {:url "http://site.com/favicon.ico"; :as :none})

Request options:
  :url :method :headers :timeout :connect-timeout :idle-timeout :query-params
  :as :form-params :client :body :basic-auth :user-agent :filter :worker-pool

unlock

(unlock url & [opts callback])(unlock url & [callback])
Issues an async HTTP UNLOCK request. See `request` for details.

url-encode

(url-encode s)