Class HttpHeaders
- java.lang.Object
-
- org.jboss.netty.handler.codec.http.HttpHeaders
-
- All Implemented Interfaces:
java.lang.Iterable<java.util.Map.Entry<java.lang.String,java.lang.String>>
- Direct Known Subclasses:
DefaultHttpHeaders
public abstract class HttpHeaders extends java.lang.Object implements java.lang.Iterable<java.util.Map.Entry<java.lang.String,java.lang.String>>Provides the constants for the standard HTTP header names and values and commonly used utility methods that accesses anHttpMessage.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classHttpHeaders.NamesStandard HTTP header names.static classHttpHeaders.ValuesStandard HTTP header values.
-
Field Summary
Fields Modifier and Type Field Description static HttpHeadersEMPTY_HEADERS
-
Constructor Summary
Constructors Modifier Constructor Description protectedHttpHeaders()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract HttpHeadersadd(java.lang.String name, java.lang.Iterable<?> values)Adds a new header with the specified name and values.abstract HttpHeadersadd(java.lang.String name, java.lang.Object value)Adds a new header with the specified name and value.HttpHeadersadd(HttpHeaders headers)Adds all header entries of the specifiedheaders.static voidaddDateHeader(HttpMessage message, java.lang.String name, java.util.Date value)Adds a new date header with the specified name and value.static voidaddHeader(HttpMessage message, java.lang.String name, java.lang.Object value)Adds a new header with the specified name and value.static voidaddIntHeader(HttpMessage message, java.lang.String name, int value)Adds a new integer header with the specified name and value.abstract HttpHeadersclear()Removes all headers from thisHttpMessage.static voidclearHeaders(HttpMessage message)Removes all headers from the specified message.abstract booleancontains(java.lang.String name)Checks to see if there is a header with the specified namebooleancontains(java.lang.String name, java.lang.String value, boolean ignoreCaseValue)Returnstrueif a header with the name and value exists.abstract java.util.List<java.util.Map.Entry<java.lang.String,java.lang.String>>entries()Returns a newListthat contains all headers in this object.abstract java.lang.Stringget(java.lang.String name)Returns the value of a header with the specified name.abstract java.util.List<java.lang.String>getAll(java.lang.String name)Returns the values of headers with the specified namestatic longgetContentLength(HttpMessage message)Returns the length of the content.static longgetContentLength(HttpMessage message, long defaultValue)Returns the length of the content.static java.util.DategetDate(HttpMessage message)Returns the value of the"Date"header.static java.util.DategetDate(HttpMessage message, java.util.Date defaultValue)Returns the value of the"Date"header.static java.util.DategetDateHeader(HttpMessage message, java.lang.String name)Returns the date header value with the specified header name.static java.util.DategetDateHeader(HttpMessage message, java.lang.String name, java.util.Date defaultValue)Returns the date header value with the specified header name.static java.lang.StringgetHeader(HttpMessage message, java.lang.String name)Returns the header value with the specified header name.static java.lang.StringgetHeader(HttpMessage message, java.lang.String name, java.lang.String defaultValue)Returns the header value with the specified header name.static java.lang.StringgetHost(HttpMessage message)Returns the value of the"Host"header.static java.lang.StringgetHost(HttpMessage message, java.lang.String defaultValue)Returns the value of the"Host"header.static intgetIntHeader(HttpMessage message, java.lang.String name)Returns the integer header value with the specified header name.static intgetIntHeader(HttpMessage message, java.lang.String name, int defaultValue)Returns the integer header value with the specified header name.private static intgetWebSocketContentLength(HttpMessage message)Returns the content length of the specified web socket message.static booleanis100ContinueExpected(HttpMessage message)Returnstrueif and only if the specified message contains the"Expect: 100-continue"header.static booleanisContentLengthSet(HttpMessage m)abstract booleanisEmpty()Checks if no header exists.static booleanisKeepAlive(HttpMessage message)Returnstrueif and only if the connection can remain open and thus 'kept alive'.static booleanisTransferEncodingChunked(HttpMessage message)Checks to see if the transfer encoding in a specifiedHttpMessageis chunkedabstract java.util.Set<java.lang.String>names()Returns a newSetthat contains the names of all headers in this object.abstract HttpHeadersremove(java.lang.String name)Removes the header with the specified name.static voidremoveHeader(HttpMessage message, java.lang.String name)Removes the header with the specified name.static voidremoveTransferEncodingChunked(HttpMessage m)abstract HttpHeadersset(java.lang.String name, java.lang.Iterable<?> values)Sets a header with the specified name and values.abstract HttpHeadersset(java.lang.String name, java.lang.Object value)Sets a header with the specified name and value.HttpHeadersset(HttpHeaders headers)Cleans the current header entries and copies all header entries of the specifiedheaders.static voidset100ContinueExpected(HttpMessage message)Sets the"Expect: 100-continue"header to the specified message.static voidset100ContinueExpected(HttpMessage message, boolean set)Sets or removes the"Expect: 100-continue"header to / from the specified message.static voidsetContentLength(HttpMessage message, long length)Sets the"Content-Length"header.static voidsetDate(HttpMessage message, java.util.Date value)Sets the"Date"header.static voidsetDateHeader(HttpMessage message, java.lang.String name, java.lang.Iterable<java.util.Date> values)Sets a new date header with the specified name and values.static voidsetDateHeader(HttpMessage message, java.lang.String name, java.util.Date value)Sets a new date header with the specified name and value.static voidsetHeader(HttpMessage message, java.lang.String name, java.lang.Iterable<?> values)Sets a new header with the specified name and values.static voidsetHeader(HttpMessage message, java.lang.String name, java.lang.Object value)Sets a new header with the specified name and value.static voidsetHost(HttpMessage message, java.lang.String value)Sets the"Host"header.static voidsetIntHeader(HttpMessage message, java.lang.String name, int value)Sets a new integer header with the specified name and value.static voidsetIntHeader(HttpMessage message, java.lang.String name, java.lang.Iterable<java.lang.Integer> values)Sets a new integer header with the specified name and values.static voidsetKeepAlive(HttpMessage message, boolean keepAlive)Sets the value of the"Connection"header depending on the protocol version of the specified message.static voidsetTransferEncodingChunked(HttpMessage m)(package private) static voidvalidateHeaderName(java.lang.String headerName)Validates the name of a header(package private) static voidvalidateHeaderValue(java.lang.String headerValue)Validates the specified header value(package private) static voidvalideHeaderNameChar(char c)
-
-
-
Field Detail
-
EMPTY_HEADERS
public static final HttpHeaders EMPTY_HEADERS
-
-
Method Detail
-
isKeepAlive
public static boolean isKeepAlive(HttpMessage message)
Returnstrueif and only if the connection can remain open and thus 'kept alive'. This methods respects the value of the"Connection"header first and then the return value ofHttpVersion.isKeepAliveDefault().
-
setKeepAlive
public static void setKeepAlive(HttpMessage message, boolean keepAlive)
Sets the value of the"Connection"header depending on the protocol version of the specified message. This method sets or removes the"Connection"header depending on what the default keep alive mode of the message's protocol version is, as specified byHttpVersion.isKeepAliveDefault().- If the connection is kept alive by default:
- set to
"close"ifkeepAliveisfalse. - remove otherwise.
- set to
- If the connection is closed by default:
- set to
"keep-alive"ifkeepAliveistrue. - remove otherwise.
- set to
- If the connection is kept alive by default:
-
getHeader
public static java.lang.String getHeader(HttpMessage message, java.lang.String name)
Returns the header value with the specified header name. If there are more than one header value for the specified header name, the first value is returned.- Returns:
- the header value or
nullif there is no such header
-
getHeader
public static java.lang.String getHeader(HttpMessage message, java.lang.String name, java.lang.String defaultValue)
Returns the header value with the specified header name. If there are more than one header value for the specified header name, the first value is returned.- Returns:
- the header value or the
defaultValueif there is no such header
-
setHeader
public static void setHeader(HttpMessage message, java.lang.String name, java.lang.Object value)
Sets a new header with the specified name and value. If there is an existing header with the same name, the existing header is removed. If the specified value is not aString, it is converted into aStringbyObject.toString(), except forDateandCalendarwhich are formatted to the date format defined in RFC2616.
-
setHeader
public static void setHeader(HttpMessage message, java.lang.String name, java.lang.Iterable<?> values)
Sets a new header with the specified name and values. If there is an existing header with the same name, the existing header is removed. This getMethod can be represented approximately as the following code:removeHeader(message, name); for (Object v: values) { if (v == null) { break; } addHeader(message, name, v); }
-
addHeader
public static void addHeader(HttpMessage message, java.lang.String name, java.lang.Object value)
Adds a new header with the specified name and value. If the specified value is not aString, it is converted into aStringbyObject.toString(), except forDateandCalendarwhich are formatted to the date format defined in RFC2616.
-
removeHeader
public static void removeHeader(HttpMessage message, java.lang.String name)
Removes the header with the specified name.
-
clearHeaders
public static void clearHeaders(HttpMessage message)
Removes all headers from the specified message.
-
getIntHeader
public static int getIntHeader(HttpMessage message, java.lang.String name)
Returns the integer header value with the specified header name. If there are more than one header value for the specified header name, the first value is returned.- Returns:
- the header value
- Throws:
java.lang.NumberFormatException- if there is no such header or the header value is not a number
-
getIntHeader
public static int getIntHeader(HttpMessage message, java.lang.String name, int defaultValue)
Returns the integer header value with the specified header name. If there are more than one header value for the specified header name, the first value is returned.- Returns:
- the header value or the
defaultValueif there is no such header or the header value is not a number
-
setIntHeader
public static void setIntHeader(HttpMessage message, java.lang.String name, int value)
Sets a new integer header with the specified name and value. If there is an existing header with the same name, the existing header is removed.
-
setIntHeader
public static void setIntHeader(HttpMessage message, java.lang.String name, java.lang.Iterable<java.lang.Integer> values)
Sets a new integer header with the specified name and values. If there is an existing header with the same name, the existing header is removed.
-
addIntHeader
public static void addIntHeader(HttpMessage message, java.lang.String name, int value)
Adds a new integer header with the specified name and value.
-
getDateHeader
public static java.util.Date getDateHeader(HttpMessage message, java.lang.String name) throws java.text.ParseException
Returns the date header value with the specified header name. If there are more than one header value for the specified header name, the first value is returned.- Returns:
- the header value
- Throws:
java.text.ParseException- if there is no such header or the header value is not a formatted date
-
getDateHeader
public static java.util.Date getDateHeader(HttpMessage message, java.lang.String name, java.util.Date defaultValue)
Returns the date header value with the specified header name. If there are more than one header value for the specified header name, the first value is returned.- Returns:
- the header value or the
defaultValueif there is no such header or the header value is not a formatted date
-
setDateHeader
public static void setDateHeader(HttpMessage message, java.lang.String name, java.util.Date value)
Sets a new date header with the specified name and value. If there is an existing header with the same name, the existing header is removed. The specified value is formatted as defined in RFC2616
-
setDateHeader
public static void setDateHeader(HttpMessage message, java.lang.String name, java.lang.Iterable<java.util.Date> values)
Sets a new date header with the specified name and values. If there is an existing header with the same name, the existing header is removed. The specified values are formatted as defined in RFC2616
-
addDateHeader
public static void addDateHeader(HttpMessage message, java.lang.String name, java.util.Date value)
Adds a new date header with the specified name and value. The specified value is formatted as defined in RFC2616
-
getContentLength
public static long getContentLength(HttpMessage message)
Returns the length of the content. Please note that this value is not retrieved fromHttpMessage.getContent()but from the"Content-Length"header, and thus they are independent from each other.- Returns:
- the content length
- Throws:
java.lang.NumberFormatException- if the message does not have the"Content-Length"header or its value is not a number
-
getContentLength
public static long getContentLength(HttpMessage message, long defaultValue)
Returns the length of the content. Please note that this value is not retrieved fromHttpMessage.getContent()but from the"Content-Length"header, and thus they are independent from each other.- Returns:
- the content length or
defaultValueif this message does not have the"Content-Length"header or its value is not a number
-
getWebSocketContentLength
private static int getWebSocketContentLength(HttpMessage message)
Returns the content length of the specified web socket message. If the specified message is not a web socket message,-1is returned.
-
setContentLength
public static void setContentLength(HttpMessage message, long length)
Sets the"Content-Length"header.
-
getHost
public static java.lang.String getHost(HttpMessage message)
Returns the value of the"Host"header.
-
getHost
public static java.lang.String getHost(HttpMessage message, java.lang.String defaultValue)
Returns the value of the"Host"header. If there is no such header, thedefaultValueis returned.
-
setHost
public static void setHost(HttpMessage message, java.lang.String value)
Sets the"Host"header.
-
getDate
public static java.util.Date getDate(HttpMessage message) throws java.text.ParseException
Returns the value of the"Date"header.- Throws:
java.text.ParseException- if there is no such header or the header value is not a formatted date
-
getDate
public static java.util.Date getDate(HttpMessage message, java.util.Date defaultValue)
Returns the value of the"Date"header. If there is no such header or the header is not a formatted date, thedefaultValueis returned.
-
setDate
public static void setDate(HttpMessage message, java.util.Date value)
Sets the"Date"header.
-
is100ContinueExpected
public static boolean is100ContinueExpected(HttpMessage message)
Returnstrueif and only if the specified message contains the"Expect: 100-continue"header.
-
set100ContinueExpected
public static void set100ContinueExpected(HttpMessage message)
Sets the"Expect: 100-continue"header to the specified message. If there is any existing"Expect"header, they are replaced with the new one.
-
set100ContinueExpected
public static void set100ContinueExpected(HttpMessage message, boolean set)
Sets or removes the"Expect: 100-continue"header to / from the specified message. If the specifiedvalueistrue, the"Expect: 100-continue"header is set and all other previous"Expect"headers are removed. Otherwise, all"Expect"headers are removed completely.
-
validateHeaderName
static void validateHeaderName(java.lang.String headerName)
Validates the name of a header- Parameters:
headerName- The header name being validated
-
valideHeaderNameChar
static void valideHeaderNameChar(char c)
-
validateHeaderValue
static void validateHeaderValue(java.lang.String headerValue)
Validates the specified header value- Parameters:
headerValue- The value being validated
-
isTransferEncodingChunked
public static boolean isTransferEncodingChunked(HttpMessage message)
Checks to see if the transfer encoding in a specifiedHttpMessageis chunked- Parameters:
message- The message to check- Returns:
- True if transfer encoding is chunked, otherwise false
-
removeTransferEncodingChunked
public static void removeTransferEncodingChunked(HttpMessage m)
-
setTransferEncodingChunked
public static void setTransferEncodingChunked(HttpMessage m)
-
isContentLengthSet
public static boolean isContentLengthSet(HttpMessage m)
-
get
public abstract java.lang.String get(java.lang.String name)
Returns the value of a header with the specified name. If there are more than one values for the specified name, the first value is returned.- Parameters:
name- The name of the header to search- Returns:
- The first header value or
nullif there is no such header
-
getAll
public abstract java.util.List<java.lang.String> getAll(java.lang.String name)
Returns the values of headers with the specified name- Parameters:
name- The name of the headers to search- Returns:
- A
Listof header values which will be empty if no values are found
-
entries
public abstract java.util.List<java.util.Map.Entry<java.lang.String,java.lang.String>> entries()
Returns a newListthat contains all headers in this object. Note that modifying the returnedListwill not affect the state of this object. If you intend to enumerate over the header entries only, useIterable.iterator()instead, which has much less overhead.
-
contains
public abstract boolean contains(java.lang.String name)
Checks to see if there is a header with the specified name- Parameters:
name- The name of the header to search for- Returns:
- True if at least one header is found
-
isEmpty
public abstract boolean isEmpty()
Checks if no header exists.
-
names
public abstract java.util.Set<java.lang.String> names()
Returns a newSetthat contains the names of all headers in this object. Note that modifying the returnedSetwill not affect the state of this object. If you intend to enumerate over the header entries only, useIterable.iterator()instead, which has much less overhead.
-
add
public abstract HttpHeaders add(java.lang.String name, java.lang.Object value)
Adds a new header with the specified name and value. If the specified value is not aString, it is converted into aStringbyObject.toString(), except in the cases ofDateandCalendar, which are formatted to the date format defined in RFC2616.- Parameters:
name- The name of the header being addedvalue- The value of the header being added- Returns:
this
-
add
public abstract HttpHeaders add(java.lang.String name, java.lang.Iterable<?> values)
Adds a new header with the specified name and values. This getMethod can be represented approximately as the following code:for (Object v: values) { if (v == null) { break; } headers.add(name, v); }- Parameters:
name- The name of the headers being setvalues- The values of the headers being set- Returns:
this
-
add
public HttpHeaders add(HttpHeaders headers)
Adds all header entries of the specifiedheaders.- Returns:
this
-
set
public abstract HttpHeaders set(java.lang.String name, java.lang.Object value)
Sets a header with the specified name and value. If there is an existing header with the same name, it is removed. If the specified value is not aString, it is converted into aStringbyObject.toString(), except forDateandCalendar, which are formatted to the date format defined in RFC2616.- Parameters:
name- The name of the header being setvalue- The value of the header being set- Returns:
this
-
set
public abstract HttpHeaders set(java.lang.String name, java.lang.Iterable<?> values)
Sets a header with the specified name and values. If there is an existing header with the same name, it is removed. This getMethod can be represented approximately as the following code:headers.remove(name); for (Object v: values) { if (v == null) { break; } headers.add(name, v); }- Parameters:
name- The name of the headers being setvalues- The values of the headers being set- Returns:
this
-
set
public HttpHeaders set(HttpHeaders headers)
Cleans the current header entries and copies all header entries of the specifiedheaders.- Returns:
this
-
remove
public abstract HttpHeaders remove(java.lang.String name)
Removes the header with the specified name.- Parameters:
name- The name of the header to remove- Returns:
this
-
clear
public abstract HttpHeaders clear()
Removes all headers from thisHttpMessage.- Returns:
this
-
contains
public boolean contains(java.lang.String name, java.lang.String value, boolean ignoreCaseValue)Returnstrueif a header with the name and value exists.- Parameters:
name- the headernamevalue- the valueignoreCaseValue-trueif case should be ignored- Returns:
- contains
trueif it contains itfalseotherwise
-
-