Package io.netty.handler.codec.http
Class QueryStringEncoder
java.lang.Object
io.netty.handler.codec.http.QueryStringEncoder
Creates a URL-encoded URI from a path string and key-value parameter pairs.
This encoder is for one time use only. Create a new instance for each URI.
QueryStringEncoder
encoder = newQueryStringEncoder
("/hello"); encoder.addParam("recipient", "world"); assert encoder.toString().equals("/hello?recipient=world");
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final char[]
private final Charset
private boolean
private final StringBuilder
private static final byte
-
Constructor Summary
ConstructorsConstructorDescriptionQueryStringEncoder
(String uri) Creates a new encoder that encodes a URI that starts with the specified path string.QueryStringEncoder
(String uri, Charset charset) Creates a new encoder that encodes a URI that starts with the specified path string in the specified charset. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Adds a parameter with the specified name and value to this encoder.private void
appendEncoded
(int b) private static boolean
dontNeedEncoding
(char ch) Determines whether the given character is a unreserved character.private void
private void
Encode the String as per RFC 3986, Section 2.private void
private void
encodeUtf8Component
(CharSequence s, int encodingStart, int len) private void
encodeUtf8ComponentSlow
(CharSequence s, int start, int len) private static char
forDigit
(int digit) Convert the given digit to a upper hexadecimal char.toString()
Returns the URL-encoded URI which was created from the path string specified in the constructor and the parameters added byaddParam(String, String)
method.toUri()
Returns the URL-encoded URI object which was created from the path string specified in the constructor and the parameters added byaddParam(String, String)
method.private void
writeUtf8Surrogate
(char c, char c2)
-
Field Details
-
charset
-
uriBuilder
-
hasParams
private boolean hasParams -
WRITE_UTF_UNKNOWN
private static final byte WRITE_UTF_UNKNOWN- See Also:
-
CHAR_MAP
private static final char[] CHAR_MAP
-
-
Constructor Details
-
QueryStringEncoder
Creates a new encoder that encodes a URI that starts with the specified path string. The encoder will encode the URI in UTF-8. -
QueryStringEncoder
Creates a new encoder that encodes a URI that starts with the specified path string in the specified charset.
-
-
Method Details
-
addParam
Adds a parameter with the specified name and value to this encoder. -
encodeComponent
-
toUri
Returns the URL-encoded URI object which was created from the path string specified in the constructor and the parameters added byaddParam(String, String)
method.- Throws:
URISyntaxException
-
toString
Returns the URL-encoded URI which was created from the path string specified in the constructor and the parameters added byaddParam(String, String)
method. -
encodeNonUtf8Component
Encode the String as per RFC 3986, Section 2.There is a little different between the JDK's encode method :
URLEncoder.encode(String, String)
. The JDK's encoder encode the space to+
and this method directly encode the blank to%20
beyond that , this method reuse theuriBuilder
in this class rather then create a new one, thus generates less garbage for the GC.- Parameters:
s
- The String to encode
-
encodeUtf8Component
- See Also:
-
encodeUtf8Component
-
encodeUtf8ComponentSlow
-
writeUtf8Surrogate
private void writeUtf8Surrogate(char c, char c2) -
appendEncoded
private void appendEncoded(int b) -
forDigit
private static char forDigit(int digit) Convert the given digit to a upper hexadecimal char.- Parameters:
digit
- the number to convert to a character.- Returns:
- the
char
representation of the specified digit in hexadecimal.
-
dontNeedEncoding
private static boolean dontNeedEncoding(char ch) Determines whether the given character is a unreserved character.unreserved characters do not need to be encoded, and include uppercase and lowercase letters, decimal digits, hyphen, period, underscore, and tilde.
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" / "*"
- Parameters:
ch
- the char to be judged whether it need to be encode- Returns:
- true or false
-