org.springframework.http.client

## Interface ClientHttpRequestInterceptor

    public interface ClientHttpRequestInterceptor

Intercepts client-side HTTP requests. Implementations of this interface can be registered with the `RestTemplate`, as to modify the outgoing `ClientHttpRequest` and/or the incoming `ClientHttpResponse`.

The main entry point for interceptors is `intercept(HttpRequest, byte[], ClientHttpRequestExecution)`.

Since:
  3.1
Author:
  Arjen Poutsma

### Method Summary

Methods
`ClientHttpResponse` `intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution)` Intercept the given request, and return a response.

### Method Detail

#### intercept

    ClientHttpResponse intercept(HttpRequest request,
                               byte[] body,
                               ClientHttpRequestExecution execution)
                                 throws IOException

Intercept the given request, and return a response. The given `ClientHttpRequestExecution` allows the interceptor to pass on the request and response to the next entity in the chain.

A typical implementation of this method would follow the following pattern:

1. Examine the request and body
2. Optionally wrap the request to filter HTTP attributes.
3. Optionally modify the body of the request.
4. Either
   - execute the request using `ClientHttpRequestExecution.execute(org.springframework.http.HttpRequest, byte[])`,
   or
   - do not execute the request to block the execution altogether.
5. Optionally wrap the response to filter HTTP attributes.

Parameters:
  `request` - the request, containing method, URI, and headers
  `body` - the body of the request
  `execution` - the request execution
Returns:
  the response
Throws:
  `IOException` - in case of I/O errors