org.springframework.http

## Class HttpHeaders

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

All Implemented Interfaces:
  Serializable, Map<String,List<String>>, MultiValueMap<String,String>

    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

Methods
`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.
`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.
`List<String>` `getIfNoneMatch()` Returns the value of the `If-None-Match` header.
`long` `getIfNotModifiedSince()` Returns the value of the `IfModifiedSince` header.
`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` `getPragma()` Returns the value of the `Pragma` 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` `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` `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` `setPragma(String pragma)` Sets the (new) value of the `Pragma` header.
`int` `size()`
`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`

### 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

#### 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

    public long getIfNotModifiedSince()

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

#### 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

#### getIfNoneMatch

    public List<String> getIfNoneMatch()

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

Returns:
  the header value

#### 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

#### 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

#### 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`