Class HttpHeaders

    • Field Detail

      • EMPTY_HEADERS

        public static final HttpHeaders EMPTY_HEADERS
    • Constructor Detail

      • HttpHeaders

        protected HttpHeaders()
    • Method Detail

      • isKeepAlive

        public static boolean isKeepAlive​(HttpMessage message)
        Returns true if 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 of HttpVersion.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 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

        public static String getHeader​(HttpMessage message,
                                       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 null if there is no such header
      • getHeader

        public static String getHeader​(HttpMessage message,
                                       String name,
                                       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 defaultValue if there is no such header
      • setHeader

        public static void setHeader​(HttpMessage message,
                                     String name,
                                     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 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

        public static void setHeader​(HttpMessage message,
                                     String name,
                                     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);
         }
         
      • removeHeader

        public static void removeHeader​(HttpMessage message,
                                        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,
                                       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:
        NumberFormatException - if there is no such header or the header value is not a number
      • getIntHeader

        public static int getIntHeader​(HttpMessage message,
                                       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 defaultValue if there is no such header or the header value is not a number
      • setIntHeader

        public static void setIntHeader​(HttpMessage message,
                                        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,
                                        String name,
                                        Iterable<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,
                                        String name,
                                        int value)
        Adds a new integer header with the specified name and value.
      • getDateHeader

        public static Date getDateHeader​(HttpMessage message,
                                         String name)
                                  throws 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:
        ParseException - if there is no such header or the header value is not a formatted date
      • getDateHeader

        public static Date getDateHeader​(HttpMessage message,
                                         String name,
                                         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 defaultValue if there is no such header or the header value is not a formatted date
      • setDateHeader

        public static void setDateHeader​(HttpMessage message,
                                         String name,
                                         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,
                                         String name,
                                         Iterable<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,
                                         String name,
                                         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 from HttpMessage.getContent() but from the "Content-Length" header, and thus they are independent from each other.
        Returns:
        the content length
        Throws:
        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 from HttpMessage.getContent() 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
      • setContentLength

        public static void setContentLength​(HttpMessage message,
                                            long length)
        Sets the "Content-Length" header.
      • getHost

        public static String getHost​(HttpMessage message)
        Returns the value of the "Host" header.
      • getHost

        public static String getHost​(HttpMessage message,
                                     String defaultValue)
        Returns the value of the "Host" header. If there is no such header, the defaultValue is returned.
      • setHost

        public static void setHost​(HttpMessage message,
                                   String value)
        Sets the "Host" header.
      • getDate

        public static Date getDate​(HttpMessage message)
                            throws ParseException
        Returns the value of the "Date" header.
        Throws:
        ParseException - if there is no such header or the header value is not a formatted date
      • getDate

        public static Date getDate​(HttpMessage message,
                                   Date defaultValue)
        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.
      • setDate

        public static void setDate​(HttpMessage message,
                                   Date value)
        Sets the "Date" header.
      • is100ContinueExpected

        public static boolean is100ContinueExpected​(HttpMessage message)
        Returns true if 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 specified value 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

        public static boolean isTransferEncodingChunked​(HttpMessage message)
        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
      • removeTransferEncodingChunked

        public static void removeTransferEncodingChunked​(HttpMessage m)
      • setTransferEncodingChunked

        public static void setTransferEncodingChunked​(HttpMessage m)
      • isContentLengthSet

        public static boolean isContentLengthSet​(HttpMessage m)
      • get

        public abstract String get​(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 null if there is no such header
      • getAll

        public abstract List<String> getAll​(String 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
      • entries

        public abstract List<Map.Entry<String,​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 Iterable.iterator() instead, which has much less overhead.
      • contains

        public abstract boolean contains​(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 Set<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 Iterable.iterator() instead, which has much less overhead.
      • add

        public abstract HttpHeaders add​(String name,
                                        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 abstract HttpHeaders add​(String name,
                                        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
      • set

        public abstract HttpHeaders set​(String name,
                                        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 abstract HttpHeaders set​(String name,
                                        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
      • remove

        public abstract HttpHeaders remove​(String name)
        Removes the header with the specified name.
        Parameters:
        name - The name of the header to remove
        Returns:
        this
      • contains

        public boolean contains​(String name,
                                String value,
                                boolean ignoreCaseValue)
        Returns true if a header with the name and value exists.
        Parameters:
        name - the headername
        value - the value
        ignoreCaseValue - true if case should be ignored
        Returns:
        contains true if it contains it false otherwise