org.springframework.http

## Class HttpHeaders

- java.lang.Object
- - org.springframework.http.HttpHeaders

- All Implemented Interfaces:
    Serializable, Map<String,List<String>>, MultiValueMap<String,String>
  Direct Known Subclasses:
    WebSocketHttpHeaders

      public class HttpHeaders
      extends Object
      implements MultiValueMap<String,String>, Serializable

  Represents HTTP request and response headers, mapping string header names to list of string values.

  In addition to the normal methods defined by `Map`, this class offers the following convenience methods:

  - `getFirst(String)` returns the first value associated with a given header name
  - `add(String, String)` adds a header value to the list of values for a header name
  - `set(String, String)` sets the header value to a single string value

  Inspired by `Headers`.

  Since:
    3.0
  Author:
    Arjen Poutsma
  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface java.util.Map

      `Map.Entry<K,V>`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `HttpHeaders()` Constructs a new, empty instance of the `HttpHeaders` object.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `add(String headerName, String headerValue)` Add the given, single header value under the given name.
    `void` | `clear()`
    `boolean` | `containsKey(Object key)`
    `boolean` | `containsValue(Object value)`
    `Set<Map.Entry<String,List<String>>>` | `entrySet()`
    `boolean` | `equals(Object other)`
    `List<String>` | `get(Object key)`
    `List<MediaType>` | `getAccept()` Return the list of acceptable media types, as specified by the `Accept` header.
    `List<Charset>` | `getAcceptCharset()` Return the list of acceptable charsets, as specified by the `Accept-Charset` header.
    `Set<HttpMethod>` | `getAllow()` Return the set of allowed `HTTP methods`, as specified by the `Allow` header.
    `String` | `getCacheControl()` Returns the value of the `Cache-Control` header.
    `List<String>` | `getConnection()` Returns the value of the `Connection` header.
    `long` | `getContentLength()` Return the length of the body in bytes, as specified by the `Content-Length` header.
    `MediaType` | `getContentType()` Return the media type of the body, as specified by the `Content-Type` header.
    `long` | `getDate()` Returns the date and time at which the message was created, as specified by the `Date` header.
    `String` | `getETag()` Returns the entity tag of the body, as specified by the `ETag` header.
    `long` | `getExpires()` Returns the date and time at which the message is no longer valid, as specified by the `Expires` header.
    `String` | `getFirst(String headerName)` Return the first header value for the given header name, if any.
    `long` | `getFirstDate(String headerName)` Parse the first header value for the given header name as a date, return -1 if there is no value, or raise `IllegalArgumentException` if the value cannot be parsed as a date.
    `protected List<String>` | `getFirstValueAsList(String header)`
    `long` | `getIfModifiedSince()` Returns the value of the `If-Modified-Since` header.
    `List<String>` | `getIfNoneMatch()` Returns the value of the `If-None-Match` header.
    `long` | `getIfNotModifiedSince()` Deprecated. use `getIfModifiedSince()`
    `long` | `getLastModified()` Returns the time the resource was last changed, as specified by the `Last-Modified` header.
    `URI` | `getLocation()` Return the (new) location of a resource, as specified by the `Location` header.
    `String` | `getOrigin()` Returns the value of the `Origin` header.
    `String` | `getPragma()` Returns the value of the `Pragma` header.
    `String` | `getUpgrade()` Returns the value of the `Upgrade` header.
    `int` | `hashCode()`
    `boolean` | `isEmpty()`
    `Set<String>` | `keySet()`
    `List<String>` | `put(String key, List<String> value)`
    `void` | `putAll(Map<? extends String,? extends List<String>> m)`
    `static HttpHeaders` | `readOnlyHttpHeaders(HttpHeaders headers)` Returns `HttpHeaders` object that can only be read, not written to.
    `List<String>` | `remove(Object key)`
    `void` | `set(String headerName, String headerValue)` Set the given, single header value under the given name.
    `void` | `setAccept(List<MediaType> acceptableMediaTypes)` Set the list of acceptable media types, as specified by the `Accept` header.
    `void` | `setAcceptCharset(List<Charset> acceptableCharsets)` Set the list of acceptable charsets, as specified by the `Accept-Charset` header.
    `void` | `setAll(Map<String,String> values)` Set the given values under.
    `void` | `setAllow(Set<HttpMethod> allowedMethods)` Set the set of allowed `HTTP methods`, as specified by the `Allow` header.
    `void` | `setCacheControl(String cacheControl)` Sets the (new) value of the `Cache-Control` header.
    `void` | `setConnection(List<String> connection)` Sets the (new) value of the `Connection` header.
    `void` | `setConnection(String connection)` Sets the (new) value of the `Connection` header.
    `void` | `setContentDispositionFormData(String name, String filename)` Sets the (new) value of the `Content-Disposition` header for `form-data`.
    `void` | `setContentLength(long contentLength)` Set the length of the body in bytes, as specified by the `Content-Length` header.
    `void` | `setContentType(MediaType mediaType)` Set the media type of the body, as specified by the `Content-Type` header.
    `void` | `setDate(long date)` Sets the date and time at which the message was created, as specified by the `Date` header.
    `void` | `setDate(String headerName, long date)` Set the given date under the given header name after formatting it as a string using the pattern `"EEE, dd MMM yyyy HH:mm:ss zzz"`.
    `void` | `setETag(String eTag)` Sets the (new) entity tag of the body, as specified by the `ETag` header.
    `void` | `setExpires(long expires)` Sets the date and time at which the message is no longer valid, as specified by the `Expires` header.
    `void` | `setIfModifiedSince(long ifModifiedSince)` Sets the (new) value of the `If-Modified-Since` header.
    `void` | `setIfNoneMatch(List<String> ifNoneMatchList)` Sets the (new) values of the `If-None-Match` header.
    `void` | `setIfNoneMatch(String ifNoneMatch)` Sets the (new) value of the `If-None-Match` header.
    `void` | `setLastModified(long lastModified)` Sets the time the resource was last changed, as specified by the `Last-Modified` header.
    `void` | `setLocation(URI location)` Set the (new) location of a resource, as specified by the `Location` header.
    `void` | `setOrigin(String origin)` Sets the (new) value of the `Origin` header.
    `void` | `setPragma(String pragma)` Sets the (new) value of the `Pragma` header.
    `void` | `setUpgrade(String upgrade)` Sets the (new) value of the `Upgrade` header.
    `int` | `size()`
    `protected String` | `toCommaDelimitedString(List<String> list)`
    `Map<String,String>` | `toSingleValueMap()` Returns the first values contained in this `MultiValueMap`.
    `String` | `toString()`
    `Collection<List<String>>` | `values()`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface java.util.Map

      `compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll`

- - ### Constructor Detail

    - #### HttpHeaders

          public HttpHeaders()

      Constructs a new, empty instance of the `HttpHeaders` object.

  - ### Method Detail

    - #### readOnlyHttpHeaders

          public static HttpHeaders readOnlyHttpHeaders(HttpHeaders headers)

      Returns `HttpHeaders` object that can only be read, not written to.

    - #### setAccept

          public void setAccept(List<MediaType> acceptableMediaTypes)

      Set the list of acceptable media types, as specified by the `Accept` header.
      Parameters:
        `acceptableMediaTypes` - the acceptable media types

    - #### getAccept

          public List<MediaType> getAccept()

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

      Returns an empty list when the acceptable media types are unspecified.

      Returns:
        the acceptable media types

    - #### setAcceptCharset

          public void setAcceptCharset(List<Charset> acceptableCharsets)

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

    - #### getAcceptCharset

          public List<Charset> getAcceptCharset()

      Return the list of acceptable charsets, as specified by the `Accept-Charset` header.
      Returns:
        the acceptable charsets

    - #### setAllow

          public void setAllow(Set<HttpMethod> allowedMethods)

      Set the set of allowed `HTTP methods`, as specified by the `Allow` header.
      Parameters:
        `allowedMethods` - the allowed methods

    - #### getAllow

          public Set<HttpMethod> getAllow()

      Return the set of allowed `HTTP methods`, as specified by the `Allow` header.

      Returns an empty set when the allowed methods are unspecified.

      Returns:
        the allowed methods

    - #### setCacheControl

          public void setCacheControl(String cacheControl)

      Sets the (new) value of the `Cache-Control` header.
      Parameters:
        `cacheControl` - the value of the header

    - #### getCacheControl

          public String getCacheControl()

      Returns the value of the `Cache-Control` header.
      Returns:
        the value of the header

    - #### setConnection

          public void setConnection(String connection)

      Sets the (new) value of the `Connection` header.
      Parameters:
        `connection` - the value of the header

    - #### setConnection

          public void setConnection(List<String> connection)

      Sets the (new) value of the `Connection` header.
      Parameters:
        `connection` - the value of the header

    - #### getConnection

          public List<String> getConnection()

      Returns the value of the `Connection` header.
      Returns:
        the value of the header

    - #### setContentDispositionFormData

          public void setContentDispositionFormData(String name,
                                                    String filename)

      Sets the (new) value of the `Content-Disposition` header for `form-data`.
      Parameters:
        `name` - the control name
        `filename` - the filename, may be `null`

    - #### setContentLength

          public void setContentLength(long contentLength)

      Set the length of the body in bytes, as specified by the `Content-Length` header.
      Parameters:
        `contentLength` - the content length

    - #### getContentLength

          public long getContentLength()

      Return the length of the body in bytes, as specified by the `Content-Length` header.

      Returns -1 when the content-length is unknown.

      Returns:
        the content length

    - #### setContentType

          public void setContentType(MediaType mediaType)

      Set the media type of the body, as specified by the `Content-Type` header.
      Parameters:
        `mediaType` - the media type

    - #### getContentType

          public MediaType getContentType()

      Return the media type of the body, as specified by the `Content-Type` header.

      Returns `null` when the content-type is unknown.

      Returns:
        the content type

    - #### setDate

          public void setDate(long date)

      Sets the date and time at which the message was created, as specified by the `Date` header.

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

      Parameters:
        `date` - the date

    - #### getDate

          public long getDate()

      Returns the date and time at which the message was created, as specified by the `Date` header.

      The date is returned as the number of milliseconds since January 1, 1970 GMT. Returns -1 when the date is unknown.

      Returns:
        the creation date/time
      Throws:
        `IllegalArgumentException` - if the value can't be converted to a date

    - #### setETag

          public void setETag(String eTag)

      Sets the (new) entity tag of the body, as specified by the `ETag` header.
      Parameters:
        `eTag` - the new entity tag

    - #### getETag

          public String getETag()

      Returns the entity tag of the body, as specified by the `ETag` header.
      Returns:
        the entity tag

    - #### setExpires

          public void setExpires(long expires)

      Sets the date and time at which the message is no longer valid, as specified by the `Expires` header.

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

      Parameters:
        `expires` - the new expires header value

    - #### getExpires

          public long getExpires()

      Returns the date and time at which the message is no longer valid, as specified by the `Expires` header.

      The date is returned as the number of milliseconds since January 1, 1970 GMT. Returns -1 when the date is unknown.

      Returns:
        the expires value

    - #### setIfModifiedSince

          public void setIfModifiedSince(long ifModifiedSince)

      Sets the (new) 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

    - #### getIfNotModifiedSince

          @Deprecated
          public long getIfNotModifiedSince()

      Deprecated. use `getIfModifiedSince()`
      Returns the value of the `IfModifiedSince` header.

      The date is returned as the number of milliseconds since January 1, 1970 GMT. Returns -1 when the date is unknown.

      Returns:
        the header value

    - #### getIfModifiedSince

          public long getIfModifiedSince()

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

      The date is returned as the number of milliseconds since January 1, 1970 GMT. Returns -1 when the date is unknown.

      Returns:
        the header value

    - #### setIfNoneMatch

          public void setIfNoneMatch(String ifNoneMatch)

      Sets the (new) value of the `If-None-Match` header.
      Parameters:
        `ifNoneMatch` - the new value of the header

    - #### setIfNoneMatch

          public void setIfNoneMatch(List<String> ifNoneMatchList)

      Sets the (new) values of the `If-None-Match` header.
      Parameters:
        `ifNoneMatchList` - the new value of the header

    - #### toCommaDelimitedString

          protected String toCommaDelimitedString(List<String> list)

    - #### getIfNoneMatch

          public List<String> getIfNoneMatch()

      Returns the value of the `If-None-Match` header.
      Returns:
        the header value

    - #### getFirstValueAsList

          protected List<String> getFirstValueAsList(String header)

    - #### setLastModified

          public void setLastModified(long lastModified)

      Sets the time the resource was last changed, as specified by the `Last-Modified` header.

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

      Parameters:
        `lastModified` - the last modified date

    - #### getLastModified

          public long getLastModified()

      Returns the time the resource was last changed, as specified by the `Last-Modified` header.

      The date is returned as the number of milliseconds since January 1, 1970 GMT. Returns -1 when the date is unknown.

      Returns:
        the last modified date

    - #### setLocation

          public void setLocation(URI location)

      Set the (new) location of a resource, as specified by the `Location` header.
      Parameters:
        `location` - the location

    - #### getLocation

          public URI getLocation()

      Return the (new) location of a resource, as specified by the `Location` header.

      Returns `null` when the location is unknown.

      Returns:
        the location

    - #### setOrigin

          public void setOrigin(String origin)

      Sets the (new) value of the `Origin` header.
      Parameters:
        `origin` - the value of the header

    - #### getOrigin

          public String getOrigin()

      Returns the value of the `Origin` header.
      Returns:
        the value of the header

    - #### setPragma

          public void setPragma(String pragma)

      Sets the (new) value of the `Pragma` header.
      Parameters:
        `pragma` - the value of the header

    - #### getPragma

          public String getPragma()

      Returns the value of the `Pragma` header.
      Returns:
        the value of the header

    - #### setUpgrade

          public void setUpgrade(String upgrade)

      Sets the (new) value of the `Upgrade` header.
      Parameters:
        `upgrade` - the value of the header

    - #### getUpgrade

          public String getUpgrade()

      Returns the value of the `Upgrade` header.
      Returns:
        the value of the header

    - #### getFirstDate

          public long getFirstDate(String headerName)

      Parse the first header value for the given header name as a date, return -1 if there is no value, or raise `IllegalArgumentException` if the value cannot be parsed as a date.

    - #### setDate

          public void setDate(String headerName,
                              long date)

      Set the given date under the given header name after formatting it as a string using the pattern `"EEE, dd MMM yyyy HH:mm:ss zzz"`. The equivalent of `set(String, String)` but for date headers.

    - #### getFirst

          public String getFirst(String headerName)

      Return the first header value for the given header name, if any.
      Specified by:
        `getFirst` in interface `MultiValueMap<String,String>`
      Parameters:
        `headerName` - the header name
      Returns:
        the first header value; or `null`

    - #### add

          public void add(String headerName,
                          String headerValue)

      Add the given, single header value under the given name.
      Specified by:
        `add` in interface `MultiValueMap<String,String>`
      Parameters:
        `headerName` - the header name
        `headerValue` - the header value
      Throws:
        `UnsupportedOperationException` - if adding headers is not supported
      See Also:
        `put(String, List)`, `set(String, String)`

    - #### set

          public void set(String headerName,
                          String headerValue)

      Set the given, single header value under the given name.
      Specified by:
        `set` in interface `MultiValueMap<String,String>`
      Parameters:
        `headerName` - the header name
        `headerValue` - the header value
      Throws:
        `UnsupportedOperationException` - if adding headers is not supported
      See Also:
        `put(String, List)`, `add(String, String)`

    - #### setAll

          public void setAll(Map<String,String> values)

      Description copied from interface: `MultiValueMap`
      Set the given values under.
      Specified by:
        `setAll` in interface `MultiValueMap<String,String>`
      Parameters:
        `values` - the values.

    - #### toSingleValueMap

          public Map<String,String> toSingleValueMap()

      Description copied from interface: `MultiValueMap`
      Returns the first values contained in this `MultiValueMap`.
      Specified by:
        `toSingleValueMap` in interface `MultiValueMap<String,String>`
      Returns:
        a single value representation of this map

    - #### size

          public int size()

      Specified by:
        `size` in interface `Map<String,List<String>>`

    - #### isEmpty

          public boolean isEmpty()

      Specified by:
        `isEmpty` in interface `Map<String,List<String>>`

    - #### containsKey

          public boolean containsKey(Object key)

      Specified by:
        `containsKey` in interface `Map<String,List<String>>`

    - #### containsValue

          public boolean containsValue(Object value)

      Specified by:
        `containsValue` in interface `Map<String,List<String>>`

    - #### get

          public List<String> get(Object key)

      Specified by:
        `get` in interface `Map<String,List<String>>`

    - #### put

          public List<String> put(String key,
                                  List<String> value)

      Specified by:
        `put` in interface `Map<String,List<String>>`

    - #### remove

          public List<String> remove(Object key)

      Specified by:
        `remove` in interface `Map<String,List<String>>`

    - #### putAll

          public void putAll(Map<? extends String,? extends List<String>> m)

      Specified by:
        `putAll` in interface `Map<String,List<String>>`

    - #### clear

          public void clear()

      Specified by:
        `clear` in interface `Map<String,List<String>>`

    - #### keySet

          public Set<String> keySet()

      Specified by:
        `keySet` in interface `Map<String,List<String>>`

    - #### values

          public Collection<List<String>> values()

      Specified by:
        `values` in interface `Map<String,List<String>>`

    - #### entrySet

          public Set<Map.Entry<String,List<String>>> entrySet()

      Specified by:
        `entrySet` in interface `Map<String,List<String>>`

    - #### equals

          public boolean equals(Object other)

      Specified by:
        `equals` in interface `Map<String,List<String>>`
      Overrides:
        `equals` in class `Object`

    - #### hashCode

          public int hashCode()

      Specified by:
        `hashCode` in interface `Map<String,List<String>>`
      Overrides:
        `hashCode` in class `Object`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`