Class HttpHeaders

  • All Implemented Interfaces:
    java.lang.Iterable<java.util.Map.Entry<java.lang.String,​java.lang.String>>
    Direct Known Subclasses:
    DefaultHttpHeaders, EmptyHttpHeaders, ReadOnlyHttpHeaders

    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 an HttpMessage.

    Concrete instances of this class are most easily obtained from its default factory: DefaultHttpHeadersFactory.headersFactory().

    • Constructor Detail

      • HttpHeaders

        protected HttpHeaders()
    • Method Detail

      • setKeepAlive

        @Deprecated
        public static void setKeepAlive​(HttpMessage message,
                                        boolean keepAlive)
        Deprecated.
        Use HttpUtil.setKeepAlive(HttpMessage, boolean) instead. Sets the value of the "Connection" header depending on the protocol version of the specified message. This getMethod sets or removes the "Connection" header depending on what the default keep alive mode of the message's protocol version is, as specified by HttpVersion.isKeepAliveDefault().
        • If the connection is kept alive by default:
          • set to "close" if keepAlive is false.
          • remove otherwise.
        • If the connection is closed by default:
          • set to "keep-alive" if keepAlive is true.
          • remove otherwise.
      • getHeader

        @Deprecated
        public static java.lang.String getHeader​(HttpMessage message,
                                                 java.lang.String name)
        Deprecated.
        Use get(CharSequence) instead.
      • getHeader

        @Deprecated
        public static java.lang.String getHeader​(HttpMessage message,
                                                 java.lang.CharSequence name)
        Deprecated.
        Use get(CharSequence) instead. 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 null if there is no such header
      • getHeader

        @Deprecated
        public static java.lang.String getHeader​(HttpMessage message,
                                                 java.lang.CharSequence name,
                                                 java.lang.String defaultValue)
        Deprecated.
        Use get(CharSequence, String) instead. 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 defaultValue if there is no such header
      • setHeader

        @Deprecated
        public static void setHeader​(HttpMessage message,
                                     java.lang.CharSequence name,
                                     java.lang.Object value)
        Deprecated.
        Use set(CharSequence, Object) instead. 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 a String, it is converted into a String by Object.toString(), except for Date and Calendar which are formatted to the date format defined in RFC2616.
      • setHeader

        @Deprecated
        public static void setHeader​(HttpMessage message,
                                     java.lang.CharSequence name,
                                     java.lang.Iterable<?> values)
        Deprecated.
        Use set(CharSequence, Iterable) instead. 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

        @Deprecated
        public static void addHeader​(HttpMessage message,
                                     java.lang.CharSequence name,
                                     java.lang.Object value)
        Deprecated.
        Use add(CharSequence, Object) instead. Adds a new header with the specified name and value. If the specified value is not a String, it is converted into a String by Object.toString(), except for Date and Calendar which are formatted to the date format defined in RFC2616.
      • removeHeader

        @Deprecated
        public static void removeHeader​(HttpMessage message,
                                        java.lang.CharSequence name)
        Deprecated.
        Use remove(CharSequence) instead. Removes the header with the specified name.
      • clearHeaders

        @Deprecated
        public static void clearHeaders​(HttpMessage message)
        Deprecated.
        Use clear() instead. Removes all headers from the specified message.
      • getIntHeader

        @Deprecated
        public static int getIntHeader​(HttpMessage message,
                                       java.lang.CharSequence name)
        Deprecated.
        Use getInt(CharSequence) instead. 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

        @Deprecated
        public static int getIntHeader​(HttpMessage message,
                                       java.lang.CharSequence name,
                                       int defaultValue)
        Deprecated.
        Use getInt(CharSequence, int) instead. 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 defaultValue if there is no such header or the header value is not a number
      • setIntHeader

        @Deprecated
        public static void setIntHeader​(HttpMessage message,
                                        java.lang.CharSequence name,
                                        int value)
        Deprecated.
        Use setInt(CharSequence, int) instead. 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

        @Deprecated
        public static void setIntHeader​(HttpMessage message,
                                        java.lang.CharSequence name,
                                        java.lang.Iterable<java.lang.Integer> values)
        Deprecated.
        Use set(CharSequence, Iterable) instead. 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

        @Deprecated
        public static void addIntHeader​(HttpMessage message,
                                        java.lang.CharSequence name,
                                        int value)
        Deprecated.
        Use addInt(CharSequence, int) instead. Adds a new integer header with the specified name and value.
      • getDateHeader

        @Deprecated
        public static java.util.Date getDateHeader​(HttpMessage message,
                                                   java.lang.CharSequence name)
                                            throws java.text.ParseException
        Deprecated.
        Use getTimeMillis(CharSequence) instead. 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

        @Deprecated
        public static java.util.Date getDateHeader​(HttpMessage message,
                                                   java.lang.CharSequence name,
                                                   java.util.Date defaultValue)
        Deprecated.
        Use getTimeMillis(CharSequence, long) instead. 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 defaultValue if there is no such header or the header value is not a formatted date
      • setDateHeader

        @Deprecated
        public static void setDateHeader​(HttpMessage message,
                                         java.lang.CharSequence name,
                                         java.util.Date value)
        Deprecated.
        Use set(CharSequence, Object) instead. 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

        @Deprecated
        public static void setDateHeader​(HttpMessage message,
                                         java.lang.CharSequence name,
                                         java.lang.Iterable<java.util.Date> values)
        Deprecated.
        Use set(CharSequence, Iterable) instead. 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

        @Deprecated
        public static void addDateHeader​(HttpMessage message,
                                         java.lang.CharSequence name,
                                         java.util.Date value)
        Deprecated.
        Use add(CharSequence, Object) instead. Adds a new date header with the specified name and value. The specified value is formatted as defined in RFC2616
      • getContentLength

        @Deprecated
        public static long getContentLength​(HttpMessage message)
        Deprecated.
        Use HttpUtil.getContentLength(HttpMessage) instead. Returns the length of the content. Please note that this value is not retrieved from ByteBufHolder.content() 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

        @Deprecated
        public static long getContentLength​(HttpMessage message,
                                            long defaultValue)
        Deprecated.
        Use HttpUtil.getContentLength(HttpMessage, long) instead. Returns the length of the content. Please note that this value is not retrieved from ByteBufHolder.content() but from the "Content-Length" header, and thus they are independent from each other.
        Returns:
        the content length or defaultValue if this message does not have the "Content-Length" header or its value is not a number
      • getHost

        @Deprecated
        public static java.lang.String getHost​(HttpMessage message)
        Deprecated.
        Use get(CharSequence) instead. Returns the value of the "Host" header.
      • getHost

        @Deprecated
        public static java.lang.String getHost​(HttpMessage message,
                                               java.lang.String defaultValue)
        Deprecated.
        Use get(CharSequence, String) instead. Returns the value of the "Host" header. If there is no such header, the defaultValue is returned.
      • setHost

        @Deprecated
        public static void setHost​(HttpMessage message,
                                   java.lang.CharSequence value)
        Deprecated.
        Use set(CharSequence, Object) instead. Sets the "Host" header.
      • getDate

        @Deprecated
        public static java.util.Date getDate​(HttpMessage message)
                                      throws java.text.ParseException
        Deprecated.
        Use getTimeMillis(CharSequence) instead. 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

        @Deprecated
        public static java.util.Date getDate​(HttpMessage message,
                                             java.util.Date defaultValue)
        Deprecated.
        Use getTimeMillis(CharSequence, long) instead. Returns the value of the "Date" header. If there is no such header or the header is not a formatted date, the defaultValue is returned.
      • set100ContinueExpected

        @Deprecated
        public static void set100ContinueExpected​(HttpMessage message)
        Deprecated.
        Use HttpUtil.set100ContinueExpected(HttpMessage, boolean) instead. 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

        @Deprecated
        public static void set100ContinueExpected​(HttpMessage message,
                                                  boolean set)
        Deprecated.
        Use HttpUtil.set100ContinueExpected(HttpMessage, boolean) instead. Sets or removes the "Expect: 100-continue" header to / from the specified message. If set is true, the "Expect: 100-continue" header is set and all other previous "Expect" headers are removed. Otherwise, all "Expect" headers are removed completely.
      • isTransferEncodingChunked

        @Deprecated
        public static boolean isTransferEncodingChunked​(HttpMessage message)
        Deprecated.
        Use HttpUtil.isTransferEncodingChunked(HttpMessage) instead. Checks to see if the transfer encoding in a specified HttpMessage is chunked
        Parameters:
        message - The message to check
        Returns:
        True if transfer encoding is chunked, otherwise false
      • encodeAscii

        @Deprecated
        public static void encodeAscii​(java.lang.CharSequence seq,
                                       ByteBuf buf)
        Deprecated.
      • newEntity

        @Deprecated
        public static java.lang.CharSequence newEntity​(java.lang.String name)
        Deprecated.
        Use AsciiString instead.

        Create a new CharSequence which is optimized for reuse as HttpHeaders name or value. So if you have a Header name or value that you want to reuse you should make use of this.

      • get

        public abstract java.lang.String get​(java.lang.String name)
        See Also:
        get(CharSequence)
      • get

        public java.lang.String get​(java.lang.CharSequence 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 null if there is no such header
        See Also:
        getAsString(CharSequence)
      • get

        public java.lang.String get​(java.lang.CharSequence name,
                                    java.lang.String defaultValue)
        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 defaultValue if there is no such header
      • getInt

        public abstract java.lang.Integer getInt​(java.lang.CharSequence name)
        Returns the integer 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 if the header is found and its value is an integer. null if there's no such header or its value is not an integer.
      • getInt

        public abstract int getInt​(java.lang.CharSequence name,
                                   int defaultValue)
        Returns the integer 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
        defaultValue - the default value
        Returns:
        the first header value if the header is found and its value is an integer. defaultValue if there's no such header or its value is not an integer.
      • getShort

        public abstract java.lang.Short getShort​(java.lang.CharSequence name)
        Returns the short 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 if the header is found and its value is a short. null if there's no such header or its value is not a short.
      • getShort

        public abstract short getShort​(java.lang.CharSequence name,
                                       short defaultValue)
        Returns the short 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
        defaultValue - the default value
        Returns:
        the first header value if the header is found and its value is a short. defaultValue if there's no such header or its value is not a short.
      • getTimeMillis

        public abstract java.lang.Long getTimeMillis​(java.lang.CharSequence name)
        Returns the date 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 if the header is found and its value is a date. null if there's no such header or its value is not a date.
      • getTimeMillis

        public abstract long getTimeMillis​(java.lang.CharSequence name,
                                           long defaultValue)
        Returns the date 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
        defaultValue - the default value
        Returns:
        the first header value if the header is found and its value is a date. defaultValue if there's no such header or its value is not a date.
      • getAll

        public abstract java.util.List<java.lang.String> getAll​(java.lang.String name)
        See Also:
        getAll(CharSequence)
      • getAll

        public java.util.List<java.lang.String> getAll​(java.lang.CharSequence name)
        Returns the values of headers with the specified name
        Parameters:
        name - The name of the headers to search
        Returns:
        A List of header values which will be empty if no values are found
        See Also:
        getAllAsString(CharSequence)
      • entries

        public abstract java.util.List<java.util.Map.Entry<java.lang.String,​java.lang.String>> entries()
        Returns a new List that contains all headers in this object. Note that modifying the returned List will not affect the state of this object. If you intend to enumerate over the header entries only, use iterator() instead, which has much less overhead.
        See Also:
        iteratorCharSequence()
      • iterator

        @Deprecated
        public abstract java.util.Iterator<java.util.Map.Entry<java.lang.String,​java.lang.String>> iterator()
        Deprecated.
        It is preferred to use iteratorCharSequence() unless you need String. If String is required then use iteratorAsString().
        Specified by:
        iterator in interface java.lang.Iterable<java.util.Map.Entry<java.lang.String,​java.lang.String>>
      • iteratorCharSequence

        public abstract java.util.Iterator<java.util.Map.Entry<java.lang.CharSequence,​java.lang.CharSequence>> iteratorCharSequence()
        Returns:
        Iterator over the name/value header pairs.
      • valueStringIterator

        public java.util.Iterator<java.lang.String> valueStringIterator​(java.lang.CharSequence name)
        Equivalent to getAll(String) but it is possible that no intermediate list is generated.
        Parameters:
        name - the name of the header to retrieve
        Returns:
        an Iterator of header values corresponding to name.
      • valueCharSequenceIterator

        public java.util.Iterator<? extends java.lang.CharSequence> valueCharSequenceIterator​(java.lang.CharSequence name)
        Equivalent to getAll(String) but it is possible that no intermediate list is generated.
        Parameters:
        name - the name of the header to retrieve
        Returns:
        an Iterator of header values corresponding to name.
      • contains

        public boolean contains​(java.lang.CharSequence 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.
      • size

        public abstract int size()
        Returns the number of headers in this object.
      • names

        public abstract java.util.Set<java.lang.String> names()
        Returns a new Set that contains the names of all headers in this object. Note that modifying the returned Set will not affect the state of this object. If you intend to enumerate over the header entries only, use iterator() instead, which has much less overhead.
      • add

        public HttpHeaders add​(java.lang.CharSequence name,
                               java.lang.Object value)
        Adds a new header with the specified name and value. If the specified value is not a String, it is converted into a String by Object.toString(), except in the cases of Date and Calendar, which are formatted to the date format defined in RFC2616.
        Parameters:
        name - The name of the header being added
        value - The value of the header being added
        Returns:
        this
      • add

        public HttpHeaders add​(java.lang.CharSequence 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 set
        values - The values of the headers being set
        Returns:
        this
      • add

        public HttpHeaders add​(HttpHeaders headers)
        Adds all header entries of the specified headers.
        Returns:
        this
      • addInt

        public abstract HttpHeaders addInt​(java.lang.CharSequence name,
                                           int value)
        Add the name to value.
        Parameters:
        name - The name to modify
        value - The value
        Returns:
        this
      • addShort

        public abstract HttpHeaders addShort​(java.lang.CharSequence name,
                                             short value)
        Add the name to value.
        Parameters:
        name - The name to modify
        value - The value
        Returns:
        this
      • set

        public HttpHeaders set​(java.lang.CharSequence 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 a String, it is converted into a String by Object.toString(), except for Date and Calendar, which are formatted to the date format defined in RFC2616.
        Parameters:
        name - The name of the header being set
        value - The value of the header being set
        Returns:
        this
      • set

        public HttpHeaders set​(java.lang.CharSequence 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 set
        values - 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 specified headers.
        Returns:
        this
      • setInt

        public abstract HttpHeaders setInt​(java.lang.CharSequence name,
                                           int value)
        Set the name to value. This will remove all previous values associated with name.
        Parameters:
        name - The name to modify
        value - The value
        Returns:
        this
      • setShort

        public abstract HttpHeaders setShort​(java.lang.CharSequence name,
                                             short value)
        Set the name to value. This will remove all previous values associated with name.
        Parameters:
        name - The name to modify
        value - The value
        Returns:
        this
      • remove

        public HttpHeaders remove​(java.lang.CharSequence name)
        Removes the header with the specified name.
        Parameters:
        name - The name of the header to remove
        Returns:
        this
      • containsValue

        public boolean containsValue​(java.lang.CharSequence name,
                                     java.lang.CharSequence value,
                                     boolean ignoreCase)
        Returns true if a header with the name and value exists, false otherwise. This also handles multiple values that are separated with a ,.

        If ignoreCase is true then a case insensitive compare is done on the value.

        Parameters:
        name - the name of the header to find
        value - the value of the header to find
        ignoreCase - true then a case insensitive compare is run to compare values. otherwise a case sensitive compare is run to compare values.
      • getAsString

        public final java.lang.String getAsString​(java.lang.CharSequence name)
        Headers.get(Object) and convert the result to a String.
        Parameters:
        name - the name of the header to retrieve
        Returns:
        the first header value if the header is found. null if there's no such header.
      • getAllAsString

        public final java.util.List<java.lang.String> getAllAsString​(java.lang.CharSequence name)
        Headers.getAll(Object) and convert each element of List to a String.
        Parameters:
        name - the name of the header to retrieve
        Returns:
        a List of header values or an empty List if no values are found.
      • iteratorAsString

        public final java.util.Iterator<java.util.Map.Entry<java.lang.String,​java.lang.String>> iteratorAsString()
        Iterator that converts each Map.Entry's key and value to a String.
      • contains

        public boolean contains​(java.lang.CharSequence name,
                                java.lang.CharSequence value,
                                boolean ignoreCase)
        Returns true if a header with the name and value exists, false otherwise.

        If ignoreCase is true then a case insensitive compare is done on the value.

        Parameters:
        name - the name of the header to find
        value - the value of the header to find
        ignoreCase - true then a case insensitive compare is run to compare values. otherwise a case sensitive compare is run to compare values.
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object