Package jodd.http

Class HttpBase<T>

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  HttpBase.Defaults  
    • Constructor Summary

      Constructors 
      Constructor Description
      HttpBase()  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected T _header​(java.lang.String name, java.lang.String value, boolean overwrite)
      Adds or sets header parameter.
      protected void _headerRaw​(java.lang.String name, java.lang.String value, boolean overwrite)
      Internal direct header setting.
      protected T _this()  
      java.lang.String accept()
      Returns "Accept" header.
      T accept​(java.lang.String encodings)
      Sets "Accept" header.
      java.lang.String acceptEncoding()
      Returns "Accept-Encoding" header.
      T acceptEncoding​(java.lang.String encodings)
      Sets "Accept-Encoding" header.
      T body​(byte[] content, java.lang.String contentType)
      Sets raw body content and discards form parameters.
      T body​(java.lang.String body)
      Sets raw body content and discards all form parameters.
      byte[] bodyBytes()
      Returns raw body bytes.
      java.lang.String bodyRaw()
      Returns raw body as received or set (always in ISO-8859-1 encoding).
      java.lang.String bodyText()
      Returns body content as text.
      T bodyText​(java.lang.String body)
      Defines body text content that will be encoded as default body media type in default body encoding if missing.
      T bodyText​(java.lang.String body, java.lang.String mediaType)
      Defines body text content that will be encoded in default body encoding.
      T bodyText​(java.lang.String body, java.lang.String mediaType, java.lang.String charset)
      Defines body text and content type (as media type and charset).
      protected abstract Buffer buffer​(boolean full)
      Creates buffer ready to be consumed.
      boolean capitalizeHeaderKeys()
      Returns whether header keys should be strict or not, when they are modified by changing them to PascalCase.
      T capitalizeHeaderKeys​(boolean capitalizeHeaderKeys)
      Sets headers behavior.
      java.lang.String charset()
      Returns charset, as defined by 'Content-Type' header.
      T charset​(java.lang.String charset)
      Defines just content type charset.
      T connectionKeepAlive​(boolean keepAlive)
      Defines "Connection" header as "Keep-Alive" or "Close".
      java.lang.String contentEncoding()
      Returns "Content-Encoding" header.
      java.lang.String contentLength()
      Returns full "Content-Length" header or null if not set.
      T contentLength​(int value)
      Sets the full "Content-Length" header.
      java.lang.String contentType()
      Returns full "Content-Type" header.
      T contentType​(java.lang.String contentType)
      Sets full "Content-Type" header.
      T contentType​(java.lang.String mediaType, java.lang.String charset)
      Sets "Content-Type" header by defining media-type and/or charset parameter.
      Cookie[] cookies()
      Parses cookie information from the header.
      HttpMultiMap<?> form()
      Return map of form parameters.
      T form​(java.lang.String name, java.lang.Object value)
      Adds the form parameter.
      T form​(java.lang.String name, java.lang.Object value, java.lang.Object... parameters)
      Sets many form parameters at once.
      T form​(java.util.Map<java.lang.String,​java.lang.Object> formMap)
      Sets many form parameters at once.
      protected Buffer formBuffer()
      Creates form buffer and sets few headers.
      T formEncoding​(java.lang.String encoding)
      Defines encoding for forms parameters.
      T formOverwrite​(java.lang.String name, java.lang.Object value)
      Sets form parameter by overwriting.
      java.lang.String header​(java.lang.String name)
      Returns value of header parameter.
      T header​(java.lang.String name, int value)
      Adds int value as header parameter,
      T header​(java.lang.String name, long millis)
      Adds date value as header parameter.
      T header​(java.lang.String name, java.lang.String value)
      Adds header parameter.
      T header​(java.util.Map<java.lang.String,​java.lang.String> headerMap)
      Adds many header parameters at once.
      java.util.Collection<java.lang.String> headerNames()
      Returns collection of all header names.
      T headerOverwrite​(java.lang.String name, java.lang.String value)
      Sets the header by overwriting it.
      void headerRemove​(java.lang.String name)
      Removes all header parameters for given name.
      java.util.List<java.lang.String> headers​(java.lang.String name)
      Returns all values for given header name.
      T headersClear()
      Clears all headers.
      java.lang.String httpVersion()
      Returns HTTP version string.
      T httpVersion​(java.lang.String httpVersion)
      Sets the HTTP version string.
      protected void initForm()
      Initializes form.
      boolean isConnectionPersistent()
      Returns true if connection is persistent.
      protected boolean isFormMultipart()
      Returns true if form contains Uploadable.
      java.lang.String mediaType()
      Returns media type, as defined by 'Content-Type' header.
      T mediaType​(java.lang.String mediaType)
      Defines just content media type.
      protected void populateHeaderAndBody​(Buffer target, Buffer formBuffer, boolean fullRequest)  
      protected void readBody​(java.io.BufferedReader reader)
      Parses body.
      protected void readHeaders​(java.io.BufferedReader reader)
      Parses headers.
      protected java.lang.String resolveFormEncoding()
      Resolves form encodings.
      void sendTo​(java.io.OutputStream out)
      Sends request or response to output stream.
      byte[] toByteArray()
      Returns byte array of request or response.
      java.lang.String tokenAuthentication()
      Returns Bearer token or null if not set.
      java.lang.String toString()
      Returns string representation of this request or response.
      java.lang.String toString​(boolean fullResponse)
      Returns full request/response, or just headers.
      protected java.lang.Object wrapFormValue​(java.lang.Object value)
      Wraps non-Strings form values with uploadable content.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • HEADER_AUTHORIZATION

        public static final java.lang.String HEADER_AUTHORIZATION
        See Also:
        Constant Field Values
      • HEADER_ACCEPT_ENCODING

        public static final java.lang.String HEADER_ACCEPT_ENCODING
        See Also:
        Constant Field Values
      • HEADER_CONTENT_TYPE

        public static final java.lang.String HEADER_CONTENT_TYPE
        See Also:
        Constant Field Values
      • HEADER_CONTENT_LENGTH

        public static final java.lang.String HEADER_CONTENT_LENGTH
        See Also:
        Constant Field Values
      • HEADER_CONTENT_ENCODING

        public static final java.lang.String HEADER_CONTENT_ENCODING
        See Also:
        Constant Field Values
      • HEADER_CONNECTION

        public static final java.lang.String HEADER_CONNECTION
        See Also:
        Constant Field Values
      • HEADER_KEEP_ALIVE

        public static final java.lang.String HEADER_KEEP_ALIVE
        See Also:
        Constant Field Values
      • HEADER_USER_AGENT

        public static final java.lang.String HEADER_USER_AGENT
        See Also:
        Constant Field Values
      • httpVersion

        protected java.lang.String httpVersion
      • capitalizeHeaderKeys

        protected boolean capitalizeHeaderKeys
      • body

        protected java.lang.String body
      • charset

        protected java.lang.String charset
      • mediaType

        protected java.lang.String mediaType
      • formEncoding

        protected java.lang.String formEncoding
      • multipart

        protected boolean multipart
    • Constructor Detail

      • HttpBase

        public HttpBase()
    • Method Detail

      • _this

        protected T _this()
      • httpVersion

        public java.lang.String httpVersion()
        Returns HTTP version string. By default it's "HTTP/1.1".
      • httpVersion

        public T httpVersion​(java.lang.String httpVersion)
        Sets the HTTP version string. Must be formed like "HTTP/1.1".
      • capitalizeHeaderKeys

        public boolean capitalizeHeaderKeys()
        Returns whether header keys should be strict or not, when they are modified by changing them to PascalCase.
        See Also:
        capitalizeHeaderKeys()
      • capitalizeHeaderKeys

        public T capitalizeHeaderKeys​(boolean capitalizeHeaderKeys)
        Sets headers behavior.
        See Also:
        capitalizeHeaderKeys()
      • header

        public java.lang.String header​(java.lang.String name)
        Returns value of header parameter. If multiple headers with the same names exist, the first value will be returned. Returns null if header doesn't exist.
      • headers

        public java.util.List<java.lang.String> headers​(java.lang.String name)
        Returns all values for given header name.
      • headerRemove

        public void headerRemove​(java.lang.String name)
        Removes all header parameters for given name.
      • headersClear

        public T headersClear()
        Clears all headers.
      • header

        public T header​(java.lang.String name,
                        java.lang.String value)
        Adds header parameter. If a header with the same name exist, it will not be overwritten, but the new header with the same name is going to be added. The order of header parameters is preserved. Also detects 'Content-Type' header and extracts media type and charset values.
      • header

        public T header​(java.util.Map<java.lang.String,​java.lang.String> headerMap)
        Adds many header parameters at once.
        See Also:
        header(String, String)
      • headerOverwrite

        public T headerOverwrite​(java.lang.String name,
                                 java.lang.String value)
        Sets the header by overwriting it.
        See Also:
        header(String, String)
      • _header

        protected T _header​(java.lang.String name,
                            java.lang.String value,
                            boolean overwrite)
        Adds or sets header parameter.
        See Also:
        header(String, String)
      • _headerRaw

        protected void _headerRaw​(java.lang.String name,
                                  java.lang.String value,
                                  boolean overwrite)
        Internal direct header setting.
      • header

        public T header​(java.lang.String name,
                        int value)
        Adds int value as header parameter,
        See Also:
        header(String, String)
      • header

        public T header​(java.lang.String name,
                        long millis)
        Adds date value as header parameter.
        See Also:
        header(String, String)
      • headerNames

        public java.util.Collection<java.lang.String> headerNames()
        Returns collection of all header names. Depends on capitalizeHeaderKeys() flag.
      • tokenAuthentication

        public java.lang.String tokenAuthentication()
        Returns Bearer token or null if not set.
      • charset

        public java.lang.String charset()
        Returns charset, as defined by 'Content-Type' header. If not set, returns null - indicating the default charset (ISO-8859-1).
      • charset

        public T charset​(java.lang.String charset)
        Defines just content type charset. Setting this value to null will remove the charset information from the header.
      • mediaType

        public java.lang.String mediaType()
        Returns media type, as defined by 'Content-Type' header. If not set, returns null - indicating the default media type, depending on request/response.
      • mediaType

        public T mediaType​(java.lang.String mediaType)
        Defines just content media type. Setting this value to null will not have any effects.
      • contentType

        public java.lang.String contentType()
        Returns full "Content-Type" header. It consists of media type and charset.
      • contentType

        public T contentType​(java.lang.String contentType)
        Sets full "Content-Type" header. Both media type and charset are overridden.
      • contentType

        public T contentType​(java.lang.String mediaType,
                             java.lang.String charset)
        Sets "Content-Type" header by defining media-type and/or charset parameter. This method may be used to update media-type and/or charset by passing non-null value for changes.

        Important: if Content-Type header has some other parameters, they will be removed!

      • connectionKeepAlive

        public T connectionKeepAlive​(boolean keepAlive)
        Defines "Connection" header as "Keep-Alive" or "Close". Existing value is overwritten.
      • isConnectionPersistent

        public boolean isConnectionPersistent()
        Returns true if connection is persistent. If "Connection" header does not exist, returns true for HTTP 1.1 and false for HTTP 1.0. If "Connection" header exist, checks if it is equal to "Close".

        In HTTP 1.1, all connections are considered persistent unless declared otherwise. Under HTTP 1.0, there is no official specification for how keepalive operates.

      • contentLength

        public java.lang.String contentLength()
        Returns full "Content-Length" header or null if not set. Returned value is raw and unchecked, exactly the same as it was specified or received. It may be even invalid.
      • contentLength

        public T contentLength​(int value)
        Sets the full "Content-Length" header.
      • contentEncoding

        public java.lang.String contentEncoding()
        Returns "Content-Encoding" header.
      • accept

        public java.lang.String accept()
        Returns "Accept" header.
      • accept

        public T accept​(java.lang.String encodings)
        Sets "Accept" header.
      • acceptEncoding

        public java.lang.String acceptEncoding()
        Returns "Accept-Encoding" header.
      • acceptEncoding

        public T acceptEncoding​(java.lang.String encodings)
        Sets "Accept-Encoding" header.
      • initForm

        protected void initForm()
        Initializes form.
      • wrapFormValue

        protected java.lang.Object wrapFormValue​(java.lang.Object value)
        Wraps non-Strings form values with uploadable content. Detects invalid types and throws an exception. So all uploadable values are of the same type.
      • form

        public T form​(java.lang.String name,
                      java.lang.Object value)
        Adds the form parameter. Existing parameter will not be overwritten.
      • formOverwrite

        public T formOverwrite​(java.lang.String name,
                               java.lang.Object value)
        Sets form parameter by overwriting.
      • form

        public T form​(java.lang.String name,
                      java.lang.Object value,
                      java.lang.Object... parameters)
        Sets many form parameters at once.
      • form

        public T form​(java.util.Map<java.lang.String,​java.lang.Object> formMap)
        Sets many form parameters at once.
      • form

        public HttpMultiMap<?> form()
        Return map of form parameters. Note that all uploadable values are wrapped with Uploadable.
      • formEncoding

        public T formEncoding​(java.lang.String encoding)
        Defines encoding for forms parameters. Default value is copied from formEncoding(java.lang.String). It is overridden by charset value.
      • cookies

        public Cookie[] cookies()
        Parses cookie information from the header.
      • bodyRaw

        public java.lang.String bodyRaw()
        Returns raw body as received or set (always in ISO-8859-1 encoding). If body content is a text, use bodyText() to get it converted. Returns null if body is not specified!
      • bodyBytes

        public byte[] bodyBytes()
        Returns raw body bytes. Returns empty array if body is not specified.
      • bodyText

        public java.lang.String bodyText()
        Returns body content as text. If charset parameter of "Content-Type" header is defined, body string charset is converted, otherwise the same raw body content is returned. Never returns null.
      • body

        public T body​(java.lang.String body)
        Sets raw body content and discards all form parameters. Important: body string is in RAW format, meaning, ISO-8859-1 encoding. Also sets "Content-Length" parameter. However, "Content-Type" is not set and it is expected from user to set this one.
      • bodyText

        public T bodyText​(java.lang.String body,
                          java.lang.String mediaType,
                          java.lang.String charset)
        Defines body text and content type (as media type and charset). Body string will be converted to raw body string and "Content-Type" header will be set.
      • body

        public T body​(byte[] content,
                      java.lang.String contentType)
        Sets raw body content and discards form parameters. Also sets "Content-Length" and "Content-Type" parameter.
        See Also:
        body(String)
      • isFormMultipart

        protected boolean isFormMultipart()
        Returns true if form contains Uploadable.
      • formBuffer

        protected Buffer formBuffer()
        Creates form buffer and sets few headers.
      • resolveFormEncoding

        protected java.lang.String resolveFormEncoding()
        Resolves form encodings.
      • toString

        public java.lang.String toString()
        Returns string representation of this request or response.
        Overrides:
        toString in class java.lang.Object
      • toString

        public java.lang.String toString​(boolean fullResponse)
        Returns full request/response, or just headers. Useful for debugging.
      • toByteArray

        public byte[] toByteArray()
        Returns byte array of request or response.
      • buffer

        protected abstract Buffer buffer​(boolean full)
        Creates buffer ready to be consumed. Buffer can, optionally, contains just headers.
      • populateHeaderAndBody

        protected void populateHeaderAndBody​(Buffer target,
                                             Buffer formBuffer,
                                             boolean fullRequest)
      • sendTo

        public void sendTo​(java.io.OutputStream out)
                    throws java.io.IOException
        Sends request or response to output stream.
        Throws:
        java.io.IOException
      • readHeaders

        protected void readHeaders​(java.io.BufferedReader reader)
        Parses headers.
      • readBody

        protected void readBody​(java.io.BufferedReader reader)
        Parses body.