List of user-visible changes that have gone into each release
- Allow http-client re-use in async situation (#599) #599
- Upgrade Dependencies (#598) #598
- Bugfix for :normalize-uri (#584) #584
- Create SSLContext consistently for all connection managers (#575) #575
- Adds RequestConfig Option :normalize-uri (#583) #583
- Adds workaround for Async Multipart uploads greater than 25 kb (#574) #574
- Adds an additional style for multi-param-style added (#562) #562
- Close transit input stream after reading response (#565) #565
- Bump patch versions of apache httpcomponents to latest. (#569) #569
- Fixed decode-json-body (#568) #568
- Handle quoted parameter values in content type (#573) #573
- Improve error message when using incompatible version of cheshire #558
- Properly handle “308 Permanent Redirect” status code #554
- Fix performance regressions from #528 #546
- Adds support for custom DNS Resolvers #545
- Buffer :debug output to improve readability #544
- Improve compatbility with GraalVM #543
- Bug fix: Check first byte before wrapping response stream with gunzip #549
- JSON parsing is always strict. See README#Incrementally JSON Parsing. This is a breaking change and users must upgrade to cheshire >= 5.9.0. #507
- Add trust-manager and key-managers support to the client #469
- Improving consistency of connection option names #483 #477
- Ensure Socket Timeout is set for BasicHttpClientConnectionManager #463
- Reduce body allocation and copying #475
- Add support for reusable http clients, returning the client in
:http-client
and allowing one to be specified (with the same setting) - #441 - Cancelling the
Future
returned from an async http request now also aborts the HttpRequest object - Async connection managers no longer put the connection manager in an illegal ACTIVE state #443
- Added the
:cookie-spec
and:cookie-policy-registry
options for specifying a custom cookie spec for parsing cookies. Since clj-http doesn’t rely on Apache’s cookies handling, this is for advanced users who wish to add their own cookie validation, or use Apache’s handling instead of clj-http’s. It also allows a user who wants to registry a custom spec to reuse the spec without creating it for every request. Semi-related to #444 - Added support for caching HTTP responses from a server. This can dramatically speed up requests to
the same URL. Filling and invalidating the cache is handled by Apache’s httpclient-cache project,
with configuration exposed under the
:cache
and:cache-config
parameters in the option map. #445
- Reintroduce the
:save-request
and:debug-body
options Wrap nested querystring params before form params, fixing #427Reverted, see further below- Merged #426 to allow an empty SSLGenericSocketFactory context
- Merged #424 to add :mime-subtype request parameter to override mime subtype
- create-multipart-entity with three arguments arity lets the selection of
HttpMultipartMode
- new request key :http-multipart-mode which is HttpMultipartMode/STRICT by default
- Added
:ignore-nested-query-string
,:flatten-nested-form-params
, and:flatten-nested-keys
options for finer-grained control over which nested parts of the request are flattened. Fixes #427 - Added
:http-builder-fns
and:async-http-builder-fns
to support arbitrary customizations to theHttpClientBuilder
andHttpAsyncClientBuilder
- Fixed an issue where redirects to a bad location could cause the async client to hang - #435
client/parse-url
now includes the original URL in the:url
keycore/get-cookie-policy
is now a multimethod. This allows users to customize the return of their own cookie validation method.- Empty responses with coercion no longer throw exceptions when processing empty gzipped response streams. Fixes #257
This list contains all the changes since 3.0.0.
Added:
- HttpRequestInterceptor support 155bd23
- protocol-version and reason-phrase f430517
- support for async HTTP requests (like Ring) 44d10ec
- support for different multi-param encoding (:repeating, :array, :indexed) cddeb3e
- Add unparse function aec7dd1
- Added :redirect-strategy :graceful
- Allow RequestConfig and HttpClientContext to be injected feb3c48
Removed:
- :save-request
Changed:
- re-written middleware using apache http client 4.5
- Fix retry-handler to be added in correct place a2c31f5
- POST Mutipart: Use charset “UTF-8” instead of “ASCII” as default charset to support internationalization 983508f
- merged #274 to update Potemkin so it supports Clojure 1.7.0 correctly
- merged #264 to add support for coercion of urlencoded data
- make ALL optional dependencies opt-in, rather than opt-out
- bumped dependencies for transit-clj and tools.reader
- merge #263 to only decode body headers when the content-type is either missing or starts with “text”
- merge #262 to prevent NullPointerException when decoding body headers with HEAD requests
- merge #261 to decode user info from URL if provided
- merge #260 to upgrade tools.reader for better cljs compatibility
- add
304
(not modified) to the list of unexceptional responses, see #259
- merged #255 to add support for Windows NTLM authentication
- Add the `with-additional-middleware` macro
- Add the ability to specify form-param-encoding for encoding form parameters
- merged #248 to removed deprecated cookie APIs from cookie.clj
- merged #245 to do some cleanups and small import fixes
- merged #240 to implement meta/with-meta for the header map
- merged #242 fixing a connection leak when http-entity is null
- bumped all dependencies to latest versions
- merged #235 to fix wrap-nested-params
- merged #236 to clean up multipart constructors and reflection
- merged #234 to allow scheme customization in default connection
- merged #232 to fix
empty
on header-map - fix :json-strict-string-keys
- exclude clojure.core/update from client ns
- added
:decode-cookies
option to allow skipping cookie header decode (if the server sends incorrectly formatted cookies for some reason)
- merged #215 to add transit support
- drop support for clojure 1.4.0, start testing 1.7.0
- merged #213 to allow passing in an already existing keystore, not just a path
- merged #211 to detect charset encoding for url-encode
- merged #206 to handle null passwords for keystores
- merged #201 to make :auto content type parsing dispatch pluggable
- Bump crouton and tools.reader dependencies
- Merged #199 to add support for form parameters in the PATCH method
- Bump dependencies and fix tests for 1.6.0 compatibility
- automatically coerce header values to strings
- fix issue where :ignore-unknown-host wasn’t using the
opt
function correctly
- Bumped httpcore to 4.3.2
- Merged #190 to support file multiparts with content, mime-type and name
- Unify all boolean operators so {:debug true} and {:debug? true} are treated the same
- Fix :trace-redirects being [nil] when :uri is used
- Merged #184 containing a bevy of
changes:
- initial header-map implementation, allowing headers to be used case insensitively
- drop support for clojure 1.2 and 1.3
- add support for clojure 1.6
- change all :use statements to :require statements
- use better docstring support for defs
- remove sleep calls in tests
- make Jetty quieter while running tests
- newer type hinting syntax
- Make :decode-body-headers more reliable by using a byte array instead of slurp.
- Merged #181 to fix some tests
- Merged #178 to eliminate test reflection
- Merged #177 to update apache HTTP deps
- Merged #175 to add {:as :json-strict} for output coercion
- Added {:as :json-strict-string-keys} output coercion
- bump dependencies to their latest
- Merged #172 to update .gitignore file and clean up whitespace for new clojure-mode
- Merged #171 to support SOCKS proxies
- branched master to create 2.x
- start major rewrite on master branch for non-deprecated Apache usage
- merged #274 to update Potemkin so it supports Clojure 1.7.0 correctly
- merged #264 to add support for coercion of urlencoded data
- make ALL optional dependencies opt-in, rather than opt-out
- bumped dependencies for transit-clj and tools.reader
- merge #263 to only decode body headers when the content-type is either missing or starts with “text”
- merge #262 to prevent NullPointerException when decoding body headers with HEAD requests
- merge #261 to decode user info from URL if provided
- merge #260 to upgrade tools.reader for better cljs compatibility
- add
304
(not modified) to the list of unexceptional responses, see #259
- merged #255 to add support for Windows NTLM authentication
- Add the `with-additional-middleware` macro
- Add the ability to specify form-param-encoding for encoding form parameters
- merged #248 to removed deprecated cookie APIs from cookie.clj
- merged #245 to do some cleanups and small import fixes
- merged #240 to implement meta/with-meta for the header map
- merged #242 fixing a connection leak when http-entity is null
- bumped all dependencies to latest versions
- merged #235 to fix wrap-nested-params
- merged #236 to clean up multipart constructors and reflection
- merged #234 to allow scheme customization in default connection
- merged #232 to fix
empty
on header-map
- fix :json-strict-string-keys
- exclude clojure.core/update from client ns
- added
:decode-cookies
option to allow skipping cookie header decode (if the server sends incorrectly formatted cookies for some reason)
- merged #215 to add transit support
- drop support for clojure 1.4.0, start testing 1.7.0
- merged #213 to allow passing in an already existing keystore, not just a path
- merged #211 to detect charset encoding for url-encode
- merged #206 to handle null passwords for keystores
- merged #201 to make :auto content type parsing dispatch pluggable
- Bump crouton and tools.reader dependencies
- Merged #199 to add support for form parameters in the PATCH method
- Bump dependencies and fix tests for 1.6.0 compatibility
- automatically coerce header values to strings
- fix issue where :ignore-unknown-host wasn’t using the
opt
function correctly
- Bumped httpcore to 4.3.2
- Merged #190 to support file multiparts with content, mime-type and name
- Unify all boolean operators so {:debug true} and {:debug? true} are treated the same
- Fix :trace-redirects being [nil] when :uri is used
- Merged #184 containing a bevy of
changes:
- initial header-map implementation, allowing headers to be used case insensitively
- drop support for clojure 1.2 and 1.3
- add support for clojure 1.6
- change all :use statements to :require statements
- use better docstring support for defs
- remove sleep calls in tests
- make Jetty quieter while running tests
- newer type hinting syntax
- Make :decode-body-headers more reliable by using a byte array instead of slurp.