org.springframework.web.reactive.function.client

## Interface WebClient.RequestHeadersSpec<S extends WebClient.RequestHeadersSpec<S>>

Type Parameters:
  `S` - a self reference to the spec type

All Known Subinterfaces:
  WebClient.RequestBodySpec, WebClient.RequestBodyUriSpec, WebClient.RequestHeadersUriSpec<S>

Enclosing interface:
  WebClient

    public static interface WebClient.RequestHeadersSpec<S extends WebClient.RequestHeadersSpec<S>>

Contract for specifying request headers leading up to the exchange.

### Method Summary

All Methods Instance Methods Abstract Methods
`S` `accept(org.springframework.http.MediaType... acceptableMediaTypes)` Set the list of acceptable media types, as specified by the `Accept` header.
`S` `acceptCharset(Charset... acceptableCharsets)` Set the list of acceptable charsets, as specified by the `Accept-Charset` header.
`S` `attribute(String name, Object value)` Set the attribute with the given name to the given value.
`S` `attributes(Consumer<Map<String,Object>> attributesConsumer)` Provides access to every attribute declared so far with the possibility to add, replace, or remove values.
`S` `cookie(String name, String value)` Add a cookie with the given name and value.
`S` `cookies(Consumer<org.springframework.util.MultiValueMap<String,String>> cookiesConsumer)` Provides access to every cookie declared so far with the possibility to add, replace, or remove values.
`reactor.core.publisher.Mono<ClientResponse>` `exchange()` Perform the HTTP request and return a `ClientResponse` with the response status and headers.
`S` `header(String headerName, String... headerValues)` Add the given, single header value under the given name.
`S` `headers(Consumer<org.springframework.http.HttpHeaders> headersConsumer)` Provides access to every header declared so far with the possibility to add, replace, or remove values.
`S` `ifModifiedSince(ZonedDateTime ifModifiedSince)` Set the value of the `If-Modified-Since` header.
`S` `ifNoneMatch(String... ifNoneMatches)` Set the values of the `If-None-Match` header.
`WebClient.ResponseSpec` `retrieve()` Perform the HTTP request and retrieve the response body:

### Method Detail

#### accept

    S accept(org.springframework.http.MediaType... acceptableMediaTypes)

Set the list of acceptable media types, as specified by the `Accept` header.

Parameters:
  `acceptableMediaTypes` - the acceptable media types
Returns:
  this builder

#### acceptCharset

    S acceptCharset(Charset... acceptableCharsets)

Set the list of acceptable charsets, as specified by the `Accept-Charset` header.

Parameters:
  `acceptableCharsets` - the acceptable charsets
Returns:
  this builder

#### cookie

    S cookie(String name,
             String value)

Add a cookie with the given name and value.

Parameters:
  `name` - the cookie name
  `value` - the cookie value
Returns:
  this builder

#### cookies

    S cookies(Consumer<org.springframework.util.MultiValueMap<String,String>> cookiesConsumer)

Provides access to every cookie declared so far with the possibility to add, replace, or remove values.

Parameters:
  `cookiesConsumer` - the consumer to provide access to
Returns:
  this builder

#### ifModifiedSince

    S ifModifiedSince(ZonedDateTime ifModifiedSince)

Set the value of the `If-Modified-Since` header.

The date should be specified as the number of milliseconds since January 1, 1970 GMT.

Parameters:
  `ifModifiedSince` - the new value of the header
Returns:
  this builder

#### ifNoneMatch

    S ifNoneMatch(String... ifNoneMatches)

Set the values of the `If-None-Match` header.

Parameters:
  `ifNoneMatches` - the new value of the header
Returns:
  this builder

#### header

    S header(String headerName,
             String... headerValues)

Add the given, single header value under the given name.

Parameters:
  `headerName` - the header name
  `headerValues` - the header value(s)
Returns:
  this builder

#### headers

    S headers(Consumer<org.springframework.http.HttpHeaders> headersConsumer)

Provides access to every header declared so far with the possibility to add, replace, or remove values.

Parameters:
  `headersConsumer` - the consumer to provide access to
Returns:
  this builder

#### attribute

    S attribute(String name,
                Object value)

Set the attribute with the given name to the given value.

Parameters:
  `name` - the name of the attribute to add
  `value` - the value of the attribute to add
Returns:
  this builder

#### attributes

    S attributes(Consumer<Map<String,Object>> attributesConsumer)

Provides access to every attribute declared so far with the possibility to add, replace, or remove values.

Parameters:
  `attributesConsumer` - the consumer to provide access to
Returns:
  this builder

#### retrieve

    WebClient.ResponseSpec retrieve()

Perform the HTTP request and retrieve the response body:

     Mono<Person> bodyMono = client.get()
         .uri("/persons/1")
         .accept(MediaType.APPLICATION_JSON)
         .retrieve()
         .bodyToMono(Person.class);

This method is a shortcut to using `exchange()` and decoding the response body through `ClientResponse`.

Returns:
  `ResponseSpec` to specify how to decode the body
See Also:
  `exchange()`

#### exchange

    reactor.core.publisher.Mono<ClientResponse> exchange()

Perform the HTTP request and return a `ClientResponse` with the response status and headers. You can then use methods of the response to consume the body:

     Mono<Person> mono = client.get()
         .uri("/persons/1")
         .accept(MediaType.APPLICATION_JSON)
         .exchange()
         .flatMap(response -> response.bodyToMono(Person.class));

     Flux<Person> flux = client.get()
         .uri("/persons")
         .accept(MediaType.APPLICATION_STREAM_JSON)
         .exchange()
         .flatMapMany(response -> response.bodyToFlux(Person.class));

NOTE: Unlike `retrieve()`, when using `exchange()`, it is the responsibility of the application to consume any response content regardless of the scenario (success, error, unexpected data, etc). Not doing so can cause a memory leak. See `ClientResponse` for a list of all the available options for consuming the body. Generally prefer using `retrieve()` unless you have a good reason to use `exchange()` which does allow to check the response status and headers before deciding how or if to consume the response.

Returns:
  a `Mono` for the response
See Also:
  `retrieve()`