# Interface ResponseHeader

All Superinterfaces:
  `StatusLine`

All Known Subinterfaces:
  `Response`

All Known Implementing Classes:
  `ResponseWrapper`

public interface ResponseHeader extends StatusLine
The `ResponseHeader` object is used to manipulate the header information for a given response. Headers are stored and retrieved from this object in a case insensitive manner. This implements the `StatusLine` object, which exposes the protocol version and response status code.

All cookies set on the response header will be delivered as a Set-Cookie header in the response message. The Content-Length and Transfer-Encoding headers can be set to configure how the message body is delivered to the connected client.

Author:
  Niall Gallagher

## Method Summary

Modifier and Type
Method
Description
`void`
`add(String name, int value)`
This can be used to add a HTTP message header to this object.
`void`
`add(String name, String value)`
This can be used to add a HTTP message header to this object.
`void`
`addDate(String name, long date)`
This is used as a convenience method for adding a header that needs to be parsed into a HTTPdate string.
`boolean`
`contains(String name)`
This is used to see if there is a HTTP message header with the given name in this container.
`int`
`getContentLength()`
This is a convenience method that can be used to determine the length of the message body.
`ContentType`
`getContentType()`
This is a convenience method that can be used to determine the content type of the message body.
`Cookie`
`getCookie(String name)`
This returns the `Cookie` object stored under the specified name.
`List<Cookie>`
`getCookies()`
This returns all `Cookie` objects stored under the specified name.
`long`
`getDate(String name)`
This can be used to get the value of the first message header that has the specified name.
`int`
`getInteger(String name)`
This can be used to get the value of the first message header that has the specified name.
`List<String>`
`getNames()`
This is used to acquire the names of the of the headers that have been set in the response.
`String`
`getTransferEncoding()`
This is a convenience method that can be used to determine the content type of the message body.
`String`
`getValue(String name)`
This can be used to get the value of the first message header that has the specified name.
`List<String>`
`getValues(String name)`
This can be used to get the values of HTTP message headers that have the specified name.
`void`
`remove(String name)`
This is used to remove the named header from the response.
`void`
`set(String name, int value)`
This can be used to set a HTTP message header to this object.
`void`
`set(String name, String value)`
This can be used to set a HTTP message header to this object.
`Cookie`
`setCookie(String name, String value)`
The `setCookie` method is used to set a cookie value with the cookie name.
`Cookie`
`setCookie(Cookie cookie)`
The `setCookie` method is used to set a cookie value with the cookie name.
`void`
`setDate(String name, long date)`
This is used as a convenience method for adding a header that needs to be parsed into a HTTP date string.

### Methods inherited from interface StatusLine

`getCode, getMajor, getMinor, getText, setCode, setMajor, setMinor, setText`

## Method Details

### getNames

List<String> getNames()
This is used to acquire the names of the of the headers that have been set in the response. This can be used to acquire all header values by name that have been set within the response. If no headers have been set this will return an empty list.

Returns:
  a list of strings representing the set header names

### add

void add(String name, String value)
This can be used to add a HTTP message header to this object. The name and value of the HTTP message header will be used to create a HTTP message header object which can be retrieved using the `getValue` in combination with the get methods.

Parameters:
  `name` - the name of the HTTP message header to be added
  `value` - the value the HTTP message header will have

### add

void add(String name, int value)
This can be used to add a HTTP message header to this object. The name and value of the HTTP message header will be used to create a HTTP message header object which can be retrieved using the `getInteger` in combination with the get methods.

Parameters:
  `name` - the name of the HTTP message header to be added
  `value` - the value the HTTP message header will have

### addDate

void addDate(String name, long date)
This is used as a convenience method for adding a header that needs to be parsed into a HTTPdate string. This will convert the date given into a date string defined in RFC 2616 sec 3.3.1.

Parameters:
  `name` - the name of the HTTP message header to be added
  `date` - the value constructed as an RFC 1123 date string

### set

void set(String name, String value)
This can be used to set a HTTP message header to this object. The name and value of the HTTP message header will be used to create a HTTP message header object which can be retrieved using the `getValue` in combination with the get methods. This will perform a `remove` using the issued header name before the header value is set.

Parameters:
  `name` - the name of the HTTP message header to be added
  `value` - the value the HTTP message header will have

### set

void set(String name, int value)
This can be used to set a HTTP message header to this object. The name and value of the HTTP message header will be used to create a HTTP message header object which can be retrieved using the `getValue` in combination with the get methods. This will perform a `remove` using the issued header name before the header value is set.

Parameters:
  `name` - the name of the HTTP message header to be added
  `value` - the value the HTTP message header will have

### setDate

void setDate(String name, long date)
This is used as a convenience method for adding a header that needs to be parsed into a HTTP date string. This will convert the date given into a date string defined in RFC 2616 sec 3.3.1. This will perform a `remove` using the issued header name before the header value is set.

Parameters:
  `name` - the name of the HTTP message header to be added
  `date` - the value constructed as an RFC 1123 date string

### remove

void remove(String name)
This is used to remove the named header from the response. This removes all header values assigned to the specified name. If it does not exist then this will return without modifying the HTTP response. Headers names removed are case insensitive.

Parameters:
  `name` - the HTTP message header to remove from the response

### contains

boolean contains(String name)
This is used to see if there is a HTTP message header with the given name in this container. If there is a HTTP message header with the specified name then this returns true otherwise false.

Parameters:
  `name` - the HTTP message header to get the value from
Returns:
  this returns true if the HTTP message header exists

### getValue

String getValue(String name)
This can be used to get the value of the first message header that has the specified name. This will return the full string representing the named header value. If the named header does not exist then this will return a null value.

Parameters:
  `name` - the HTTP message header to get the value from
Returns:
  this returns the value that the HTTP message header

### getInteger

int getInteger(String name)
This can be used to get the value of the first message header that has the specified name. This will return the integer representing the named header value. If the named header does not exist then this will return a value of minus one, -1.

Parameters:
  `name` - the HTTP message header to get the value from
Returns:
  this returns the value that the HTTP message header

### getDate

long getDate(String name)
This can be used to get the value of the first message header that has the specified name. This will return the long value representing the named header value. If the named header does not exist then this will return a value of minus one, -1.

Parameters:
  `name` - the HTTP message header to get the value from
Returns:
  this returns the value that the HTTP message header

### getValues

List<String> getValues(String name)
This can be used to get the values of HTTP message headers that have the specified name. This is a convenience method that will present that values as tokens extracted from the header. This has obvious performance benefits as it avoids having to deal with `substring` and `trim` calls.

The tokens returned by this method are ordered according to there HTTP quality values, or "q" values, see RFC 2616 section 3.9. This also strips out the quality parameter from tokens returned. So "image/html; q=0.9" results in "image/html". If there are no "q" values present then order is by appearance.

The result from this is either the trimmed header value, that is, the header value with no leading or trailing whitespace or an array of trimmed tokens ordered with the most preferred in the lower indexes, so index 0 is has highest preference.

Parameters:
  `name` - the name of the headers that are to be retrieved
Returns:
  ordered list of tokens extracted from the header(s)

### setCookie

Cookie setCookie(Cookie cookie)
The `setCookie` method is used to set a cookie value with the cookie name. This will add a cookie to the response stored under the name of the cookie, when this is committed it will be added as a Set-Cookie header to the resulting response.

Parameters:
  `cookie` - this is the cookie to be added to the response
Returns:
  returns the cookie that has been set in the response

### setCookie

Cookie setCookie(String name, String value)
The `setCookie` method is used to set a cookie value with the cookie name. This will add a cookie to the response stored under the name of the cookie, when this is committed it will be added as a Set-Cookie header to the resulting response. This is a convenience method that avoids cookie creation.

Parameters:
  `name` - this is the cookie to be added to the response
  `value` - this is the cookie value that is to be used
Returns:
  returns the cookie that has been set in the response

### getCookie

Cookie getCookie(String name)
This returns the `Cookie` object stored under the specified name. This is used to retrieve cookies that have been set with the `setCookie` methods. If the cookie does not exist under the specified name this will return null.

Parameters:
  `name` - this is the name of the cookie to be retrieved
Returns:
  returns the `Cookie` by the given name

### getCookies

List<Cookie> getCookies()
This returns all `Cookie` objects stored under the specified name. This is used to retrieve cookies that have been set with the `setCookie` methods. If there are no cookies then this will return an empty list.

Returns:
  returns all the `Cookie` in the response

### getContentType

ContentType getContentType()
This is a convenience method that can be used to determine the content type of the message body. This will determine whether there is a `Content-Type` header, if there is then this will parse that header and represent it as a typed object which will expose the various parts of the HTTP header.

Returns:
  this returns the content type value if it exists

### getTransferEncoding

String getTransferEncoding()
This is a convenience method that can be used to determine the content type of the message body. This will determine whether there is a `Transfer-Encoding` header, if there is then this will parse that header and return the first token in the comma separated list of values, which is the primary value.

Returns:
  this returns the transfer encoding value if it exists

### getContentLength

int getContentLength()
This is a convenience method that can be used to determine the length of the message body. This will determine if there is a `Content-Length` header, if it does then the length can be determined, if not then this returns -1.

Returns:
  content length, or -1 if it cannot be determined