Package jodd.http
Class HttpBase<T>
- java.lang.Object
-
- jodd.http.HttpBase<T>
-
- Direct Known Subclasses:
HttpRequest,HttpResponse
public abstract class HttpBase<T> extends java.lang.ObjectBase class forHttpRequestandHttpResponse.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classHttpBase.Defaults
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.Stringbodyprotected booleancapitalizeHeaderKeysprotected java.lang.Stringcharsetprotected HttpMultiMap<?>formprotected java.lang.StringformEncodingstatic java.lang.StringHEADER_ACCEPTstatic java.lang.StringHEADER_ACCEPT_ENCODINGstatic java.lang.StringHEADER_AUTHORIZATIONstatic java.lang.StringHEADER_CLOSEstatic java.lang.StringHEADER_CONNECTIONstatic java.lang.StringHEADER_CONTENT_ENCODINGstatic java.lang.StringHEADER_CONTENT_LENGTHstatic java.lang.StringHEADER_CONTENT_TYPEstatic java.lang.StringHEADER_ETAGstatic java.lang.StringHEADER_HOSTstatic java.lang.StringHEADER_KEEP_ALIVEstatic java.lang.StringHEADER_USER_AGENTprotected HeadersMultiMapheadersstatic java.lang.StringHTTP_1_0static java.lang.StringHTTP_1_1protected HttpProgressListenerhttpProgressListenerprotected java.lang.StringhttpVersionprotected java.lang.StringmediaTypeprotected booleanmultipart
-
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.Stringaccept()Returns "Accept" header.Taccept(java.lang.String encodings)Sets "Accept" header.java.lang.StringacceptEncoding()Returns "Accept-Encoding" header.TacceptEncoding(java.lang.String encodings)Sets "Accept-Encoding" header.Tbody(byte[] content, java.lang.String contentType)Sets raw body content and discards form parameters.Tbody(java.lang.String body)Sets raw body content and discards all form parameters.byte[]bodyBytes()Returns raw body bytes.java.lang.StringbodyRaw()Returns raw body as received or set (always in ISO-8859-1 encoding).java.lang.StringbodyText()Returnsbody contentas text.TbodyText(java.lang.String body)Definesbody text contentthat will be encoded asdefault body media typeindefault body encodingif missing.TbodyText(java.lang.String body, java.lang.String mediaType)Definesbody text contentthat will be encoded indefault body encoding.TbodyText(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 Bufferbuffer(boolean full)Createsbufferready to be consumed.booleancapitalizeHeaderKeys()Returns whether header keys should be strict or not, when they are modified by changing them to PascalCase.TcapitalizeHeaderKeys(boolean capitalizeHeaderKeys)Sets headers behavior.java.lang.Stringcharset()Returns charset, as defined by 'Content-Type' header.Tcharset(java.lang.String charset)Defines just content type charset.TconnectionKeepAlive(boolean keepAlive)Defines "Connection" header as "Keep-Alive" or "Close".java.lang.StringcontentEncoding()Returns "Content-Encoding" header.java.lang.StringcontentLength()Returns full "Content-Length" header ornullif not set.TcontentLength(int value)Sets the full "Content-Length" header.java.lang.StringcontentType()Returns full "Content-Type" header.TcontentType(java.lang.String contentType)Sets full "Content-Type" header.TcontentType(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.Tform(java.lang.String name, java.lang.Object value)Adds the form parameter.Tform(java.lang.String name, java.lang.Object value, java.lang.Object... parameters)Sets many form parameters at once.Tform(java.util.Map<java.lang.String,java.lang.Object> formMap)Sets many form parameters at once.protected BufferformBuffer()Creates formbufferand sets few headers.TformEncoding(java.lang.String encoding)Defines encoding for forms parameters.TformOverwrite(java.lang.String name, java.lang.Object value)Sets form parameter by overwriting.java.lang.Stringheader(java.lang.String name)Returns value of header parameter.Theader(java.lang.String name, int value)Addsintvalue as header parameter,Theader(java.lang.String name, long millis)Adds date value as header parameter.Theader(java.lang.String name, java.lang.String value)Adds header parameter.Theader(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.TheaderOverwrite(java.lang.String name, java.lang.String value)Sets the header by overwriting it.voidheaderRemove(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.TheadersClear()Clears all headers.java.lang.StringhttpVersion()Returns HTTP version string.ThttpVersion(java.lang.String httpVersion)Sets the HTTP version string.protected voidinitForm()Initializes form.booleanisConnectionPersistent()Returnstrueif connection is persistent.protected booleanisFormMultipart()Returnstrueif form containsUploadable.java.lang.StringmediaType()Returns media type, as defined by 'Content-Type' header.TmediaType(java.lang.String mediaType)Defines just content media type.protected voidpopulateHeaderAndBody(Buffer target, Buffer formBuffer, boolean fullRequest)protected voidreadBody(java.io.BufferedReader reader)Parses body.protected voidreadHeaders(java.io.BufferedReader reader)Parses headers.protected java.lang.StringresolveFormEncoding()Resolves form encodings.voidsendTo(java.io.OutputStream out)Sends request or response to output stream.byte[]toByteArray()Returns byte array of request or response.java.lang.StringtokenAuthentication()Returns Bearer token ornullif not set.java.lang.StringtoString()Returns string representation of this request or response.java.lang.StringtoString(boolean fullResponse)Returns full request/response, or just headers.protected java.lang.ObjectwrapFormValue(java.lang.Object value)Wraps non-Strings form values withuploadable content.
-
-
-
Field Detail
-
HEADER_ACCEPT
public static final java.lang.String HEADER_ACCEPT
- See Also:
- Constant Field Values
-
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_HOST
public static final java.lang.String HEADER_HOST
- See Also:
- Constant Field Values
-
HEADER_ETAG
public static final java.lang.String HEADER_ETAG
- 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_CLOSE
public static final java.lang.String HEADER_CLOSE
- See Also:
- Constant Field Values
-
HEADER_USER_AGENT
public static final java.lang.String HEADER_USER_AGENT
- See Also:
- Constant Field Values
-
HTTP_1_0
public static final java.lang.String HTTP_1_0
- See Also:
- Constant Field Values
-
HTTP_1_1
public static final java.lang.String HTTP_1_1
- See Also:
- Constant Field Values
-
httpVersion
protected java.lang.String httpVersion
-
capitalizeHeaderKeys
protected boolean capitalizeHeaderKeys
-
headers
protected final HeadersMultiMap headers
-
form
protected HttpMultiMap<?> form
-
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
-
httpProgressListener
protected HttpProgressListener httpProgressListener
-
-
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. Returnsnullif 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 extractsmedia typeandcharsetvalues.
-
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)
Addsintvalue 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 oncapitalizeHeaderKeys()flag.
-
tokenAuthentication
public java.lang.String tokenAuthentication()
Returns Bearer token ornullif not set.
-
charset
public java.lang.String charset()
Returns charset, as defined by 'Content-Type' header. If not set, returnsnull- indicating the default charset (ISO-8859-1).
-
charset
public T charset(java.lang.String charset)
Defines just content type charset. Setting this value tonullwill 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, returnsnull- 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 tonullwill not have any effects.
-
contentType
public java.lang.String contentType()
Returns full "Content-Type" header. It consists ofmedia typeandcharset.
-
contentType
public T contentType(java.lang.String contentType)
Sets full "Content-Type" header. Bothmedia typeandcharsetare 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-nullvalue 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()
Returnstrueif connection is persistent. If "Connection" header does not exist, returnstruefor HTTP 1.1 andfalsefor 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 ornullif 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 withuploadable 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 withUploadable.
-
formEncoding
public T formEncoding(java.lang.String encoding)
Defines encoding for forms parameters. Default value is copied fromformEncoding(java.lang.String). It is overridden bycharsetvalue.
-
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, usebodyText()to get it converted. Returnsnullif 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()
Returnsbody contentas text. Ifcharset parameterof "Content-Type" header is defined, body string charset is converted, otherwise the same raw body content is returned. Never returnsnull.
-
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 toraw body stringand "Content-Type" header will be set.
-
bodyText
public T bodyText(java.lang.String body, java.lang.String mediaType)
Definesbody text contentthat will be encoded indefault body encoding.
-
bodyText
public T bodyText(java.lang.String body)
Definesbody text contentthat will be encoded asdefault body media typeindefault body encodingif missing.
-
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()
Returnstrueif form containsUploadable.
-
resolveFormEncoding
protected java.lang.String resolveFormEncoding()
Resolves form encodings.
-
toString
public java.lang.String toString()
Returns string representation of this request or response.- Overrides:
toStringin classjava.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)
Createsbufferready 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.IOExceptionSends 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.
-
-