Package org.springframework.http.client
Class BufferingClientHttpRequestFactory
java.lang.Object
org.springframework.http.client.AbstractClientHttpRequestFactoryWrapper
org.springframework.http.client.BufferingClientHttpRequestFactory
- All Implemented Interfaces:
ClientHttpRequestFactory
ClientHttpRequestFactory
that wraps another in order to buffer
outgoing and incoming content in memory, making it possible to set a
content-length on the request, and to read the
response body multiple times.
Note: as of 7.0, buffering can be enabled through
RestClient.Builder.bufferContent(BiPredicate)
and therefore it is not necessary for applications to use this class directly.
- Since:
- 3.1
- Author:
- Arjen Poutsma, Rossen Stoyanchev
-
Constructor Summary
ConstructorDescriptionBufferingClientHttpRequestFactory
(ClientHttpRequestFactory requestFactory) Create a buffering wrapper for the givenClientHttpRequestFactory
.BufferingClientHttpRequestFactory
(ClientHttpRequestFactory requestFactory, @Nullable BiPredicate<URI, HttpMethod> bufferingPredicate) Constructor variant with an additional predicate to decide whether to buffer the response. -
Method Summary
Modifier and TypeMethodDescriptionprotected ClientHttpRequest
createRequest
(URI uri, HttpMethod httpMethod, ClientHttpRequestFactory requestFactory) Create a newClientHttpRequest
for the specified URI and HTTP method by using the passed-on request factory.protected boolean
shouldBuffer
(URI uri, HttpMethod httpMethod) Indicates whether the request/response exchange for the given URI and method should be buffered in memory.Methods inherited from class org.springframework.http.client.AbstractClientHttpRequestFactoryWrapper
createRequest, getDelegate
-
Constructor Details
-
BufferingClientHttpRequestFactory
Create a buffering wrapper for the givenClientHttpRequestFactory
.- Parameters:
requestFactory
- the target request factory to wrap
-
BufferingClientHttpRequestFactory
public BufferingClientHttpRequestFactory(ClientHttpRequestFactory requestFactory, @Nullable BiPredicate<URI, HttpMethod> bufferingPredicate) Constructor variant with an additional predicate to decide whether to buffer the response.- Since:
- 7.0
-
-
Method Details
-
createRequest
protected ClientHttpRequest createRequest(URI uri, HttpMethod httpMethod, ClientHttpRequestFactory requestFactory) throws IOException Description copied from class:AbstractClientHttpRequestFactoryWrapper
Create a newClientHttpRequest
for the specified URI and HTTP method by using the passed-on request factory.Called from
AbstractClientHttpRequestFactoryWrapper.createRequest(URI, HttpMethod)
.- Specified by:
createRequest
in classAbstractClientHttpRequestFactoryWrapper
- Parameters:
uri
- the URI to create a request forhttpMethod
- the HTTP method to executerequestFactory
- the wrapped request factory- Returns:
- the created request
- Throws:
IOException
- in case of I/O errors
-
shouldBuffer
Indicates whether the request/response exchange for the given URI and method should be buffered in memory.The default implementation returns
true
for all URIs and methods. Subclasses can override this method to change this behavior.- Parameters:
uri
- the URIhttpMethod
- the method- Returns:
true
if the exchange should be buffered;false
otherwise
-