Package io.netty.handler.codec.http
Class HttpUtil
java.lang.Object
io.netty.handler.codec.http.HttpUtil
Utility methods useful in the HTTP context.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final AsciiString
private static final String
private static final AsciiString
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic String
Formats the host string of an address so it can be used for computing an HTTP component such as a URL or a Host headerstatic Charset
getCharset
(HttpMessage message) Fetch charset from message's Content-Type header.static Charset
getCharset
(HttpMessage message, Charset defaultCharset) Fetch charset from message's Content-Type header.static Charset
getCharset
(CharSequence contentTypeValue) Fetch charset from Content-Type header value.static Charset
getCharset
(CharSequence contentTypeValue, Charset defaultCharset) Fetch charset from Content-Type header value.static CharSequence
getCharsetAsSequence
(HttpMessage message) Fetch charset from message's Content-Type header as a char sequence.static CharSequence
getCharsetAsSequence
(CharSequence contentTypeValue) Fetch charset from Content-Type header value as a char sequence.static CharSequence
getCharsetAsString
(HttpMessage message) Deprecated.static long
getContentLength
(HttpMessage message) Returns the length of the content.static int
getContentLength
(HttpMessage message, int defaultValue) Get anint
representation ofgetContentLength(HttpMessage, long)
.static long
getContentLength
(HttpMessage message, long defaultValue) Returns the length of the content or the specified default value if the message does not have the"Content-Length" header
.static CharSequence
getMimeType
(HttpMessage message) Fetch MIME type part from message's Content-Type header as a char sequence.static CharSequence
getMimeType
(CharSequence contentTypeValue) Fetch MIME type part from Content-Type header value as a char sequence.(package private) static int
getWebSocketContentLength
(HttpMessage message) Returns the content length of the specified web socket message.static boolean
is100ContinueExpected
(HttpMessage message) Returnstrue
if and only if the specified message contains an expect header and the only expectation present is the 100-continue expectation.static boolean
isAsteriskForm
(String uri) Determine if a string uri is in asterisk-form according to rfc7230, 5.3.static boolean
isAsteriskForm
(URI uri) Determine if a uri is in asterisk-form according to rfc7230, 5.3.static boolean
private static boolean
isExpectHeaderValid
(HttpMessage message) static boolean
isKeepAlive
(HttpMessage message) Returnstrue
if and only if the connection can remain open and thus 'kept alive'.static boolean
isOriginForm
(String uri) Determine if a string uri is in origin-form according to rfc7230, 5.3.static boolean
isOriginForm
(URI uri) Determine if a uri is in origin-form according to rfc7230, 5.3.static boolean
isTransferEncodingChunked
(HttpMessage message) Checks to see if the transfer encoding in a specifiedHttpMessage
is chunked(package private) static boolean
isUnsupportedExpectation
(HttpMessage message) Returnstrue
if the specified message contains an expect header specifying an expectation that is not supported.static long
normalizeAndGetContentLength
(List<? extends CharSequence> contentLengthFields, boolean isHttp10OrEarlier, boolean allowDuplicateContentLengths) Validates, and optionally extracts the content length from headers.static void
set100ContinueExpected
(HttpMessage message, boolean expected) Sets or removes the"Expect: 100-continue"
header to / from the specified message.static void
setContentLength
(HttpMessage message, long length) Sets the"Content-Length"
header.static void
setKeepAlive
(HttpHeaders h, HttpVersion httpVersion, boolean keepAlive) Sets the value of the"Connection"
header depending on the protocol version of the specified message.static void
setKeepAlive
(HttpMessage message, boolean keepAlive) Sets the value of the"Connection"
header depending on the protocol version of the specified message.static void
setTransferEncodingChunked
(HttpMessage m, boolean chunked) Set theHttpHeaderNames.TRANSFER_ENCODING
to either includeHttpHeaderValues.CHUNKED
ifchunked
istrue
, or removeHttpHeaderValues.CHUNKED
ifchunked
isfalse
.
-
Field Details
-
CHARSET_EQUALS
-
SEMICOLON
-
COMMA_STRING
-
-
Constructor Details
-
HttpUtil
private HttpUtil()
-
-
Method Details
-
isOriginForm
Determine if a uri is in origin-form according to rfc7230, 5.3. -
isOriginForm
Determine if a string uri is in origin-form according to rfc7230, 5.3. -
isAsteriskForm
Determine if a uri is in asterisk-form according to rfc7230, 5.3. -
isAsteriskForm
Determine if a string uri is in asterisk-form according to rfc7230, 5.3. -
isKeepAlive
Returnstrue
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 ofHttpVersion.isKeepAliveDefault()
. -
setKeepAlive
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 byHttpVersion.isKeepAliveDefault()
.- If the connection is kept alive by default:
- set to
"close"
ifkeepAlive
isfalse
. - remove otherwise.
- set to
- If the connection is closed by default:
- set to
"keep-alive"
ifkeepAlive
istrue
. - remove otherwise.
- set to
- See Also:
- If the connection is kept alive by default:
-
setKeepAlive
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 byHttpVersion.isKeepAliveDefault()
.- If the connection is kept alive by default:
- set to
"close"
ifkeepAlive
isfalse
. - remove otherwise.
- set to
- If the connection is closed by default:
- set to
"keep-alive"
ifkeepAlive
istrue
. - remove otherwise.
- set to
- If the connection is kept alive by default:
-
getContentLength
Returns the length of the content. Please note that this value is not retrieved fromByteBufHolder.content()
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
Returns the length of the content or the specified default value if the message does not have the"Content-Length" header
. Please note that this value is not retrieved fromByteBufHolder.content()
but from the"Content-Length"
header, and thus they are independent from each other.- Parameters:
message
- the messagedefaultValue
- the default value- Returns:
- the content length or the specified default value
- Throws:
NumberFormatException
- if the"Content-Length"
header does not parse as a long
-
getContentLength
Get anint
representation ofgetContentLength(HttpMessage, long)
.- Returns:
- the content length or
defaultValue
if this message does not have the"Content-Length"
header. - Throws:
NumberFormatException
- if the"Content-Length"
header does not parse as an int
-
getWebSocketContentLength
Returns the content length of the specified web socket message. If the specified message is not a web socket message,-1
is returned. -
setContentLength
Sets the"Content-Length"
header. -
isContentLengthSet
-
is100ContinueExpected
Returnstrue
if and only if the specified message contains an expect header and the only expectation present is the 100-continue expectation. Note that this method returnsfalse
if the expect header is not valid for the message (e.g., the message is a response, or the version on the message is HTTP/1.0).- Parameters:
message
- the message- Returns:
true
if and only if the expectation 100-continue is present and it is the only expectation present
-
isUnsupportedExpectation
Returnstrue
if the specified message contains an expect header specifying an expectation that is not supported. Note that this method returnsfalse
if the expect header is not valid for the message (e.g., the message is a response, or the version on the message is HTTP/1.0).- Parameters:
message
- the message- Returns:
true
if and only if an expectation is present that is not supported
-
isExpectHeaderValid
-
set100ContinueExpected
Sets or removes the"Expect: 100-continue"
header to / from the specified message. Ifexpected
istrue
, the"Expect: 100-continue"
header is set and all other previous"Expect"
headers are removed. Otherwise, all"Expect"
headers are removed completely. -
isTransferEncodingChunked
Checks to see if the transfer encoding in a specifiedHttpMessage
is chunked- Parameters:
message
- The message to check- Returns:
- True if transfer encoding is chunked, otherwise false
-
setTransferEncodingChunked
Set theHttpHeaderNames.TRANSFER_ENCODING
to either includeHttpHeaderValues.CHUNKED
ifchunked
istrue
, or removeHttpHeaderValues.CHUNKED
ifchunked
isfalse
.- Parameters:
m
- The message which contains the headers to modify.chunked
- iftrue
then includeHttpHeaderValues.CHUNKED
in the headers. otherwise removeHttpHeaderValues.CHUNKED
from the headers.
-
getCharset
Fetch charset from message's Content-Type header.- Parameters:
message
- entity to fetch Content-Type header from- Returns:
- the charset from message's Content-Type header or
CharsetUtil.ISO_8859_1
if charset is not presented or unparsable
-
getCharset
Fetch charset from Content-Type header value.- Parameters:
contentTypeValue
- Content-Type header value to parse- Returns:
- the charset from message's Content-Type header or
CharsetUtil.ISO_8859_1
if charset is not presented or unparsable
-
getCharset
Fetch charset from message's Content-Type header.- Parameters:
message
- entity to fetch Content-Type header fromdefaultCharset
- result to use in case of empty, incorrect or doesn't contain required part header value- Returns:
- the charset from message's Content-Type header or
defaultCharset
if charset is not presented or unparsable
-
getCharset
Fetch charset from Content-Type header value.- Parameters:
contentTypeValue
- Content-Type header value to parsedefaultCharset
- result to use in case of empty, incorrect or doesn't contain required part header value- Returns:
- the charset from message's Content-Type header or
defaultCharset
if charset is not presented or unparsable
-
getCharsetAsString
Deprecated.Fetch charset from message's Content-Type header as a char sequence. A lot of sites/possibly clients have charset="CHARSET", for example charset="utf-8". Or "utf8" instead of "utf-8" This is not according to standard, but this method provide an ability to catch desired mistakes manually in code- Parameters:
message
- entity to fetch Content-Type header from- Returns:
- the
CharSequence
with charset from message's Content-Type header ornull
if charset is not presented
-
getCharsetAsSequence
Fetch charset from message's Content-Type header as a char sequence. A lot of sites/possibly clients have charset="CHARSET", for example charset="utf-8". Or "utf8" instead of "utf-8" This is not according to standard, but this method provide an ability to catch desired mistakes manually in code- Returns:
- the
CharSequence
with charset from message's Content-Type header ornull
if charset is not presented
-
getCharsetAsSequence
Fetch charset from Content-Type header value as a char sequence. A lot of sites/possibly clients have charset="CHARSET", for example charset="utf-8". Or "utf8" instead of "utf-8" This is not according to standard, but this method provide an ability to catch desired mistakes manually in code- Parameters:
contentTypeValue
- Content-Type header value to parse- Returns:
- the
CharSequence
with charset from message's Content-Type header ornull
if charset is not presented - Throws:
NullPointerException
- in case ifcontentTypeValue == null
-
getMimeType
Fetch MIME type part from message's Content-Type header as a char sequence.- Parameters:
message
- entity to fetch Content-Type header from- Returns:
- the MIME type as a
CharSequence
from message's Content-Type header ornull
if content-type header or MIME type part of this header are not presented "content-type: text/html; charset=utf-8" - "text/html" will be returned
"content-type: text/html" - "text/html" will be returned
"content-type: " or no header -null
we be returned
-
getMimeType
Fetch MIME type part from Content-Type header value as a char sequence.- Parameters:
contentTypeValue
- Content-Type header value to parse- Returns:
- the MIME type as a
CharSequence
from message's Content-Type header ornull
if content-type header or MIME type part of this header are not presented "content-type: text/html; charset=utf-8" - "text/html" will be returned
"content-type: text/html" - "text/html" will be returned
"content-type: empty header -null
we be returned - Throws:
NullPointerException
- in case ifcontentTypeValue == null
-
formatHostnameForHttp
Formats the host string of an address so it can be used for computing an HTTP component such as a URL or a Host header- Parameters:
addr
- the address- Returns:
- the formatted String
-
normalizeAndGetContentLength
@UnstableApi public static long normalizeAndGetContentLength(List<? extends CharSequence> contentLengthFields, boolean isHttp10OrEarlier, boolean allowDuplicateContentLengths) Validates, and optionally extracts the content length from headers. This method is not intended for general use, but is here to be shared between HTTP/1 and HTTP/2 parsing.- Parameters:
contentLengthFields
- the content-length header fields.isHttp10OrEarlier
-true
if we are handling HTTP/1.0 or earlierallowDuplicateContentLengths
-true
if multiple, identical-value content lengths should be allowed.- Returns:
- the normalized content length from the headers or
-1
if the fields were empty. - Throws:
IllegalArgumentException
- if the content-length fields are not valid
-
getCharsetAsSequence(HttpMessage)