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.
QueryStringEncoderencoder = 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 Charsetprivate booleanprivate final StringBuilderprivate 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 TypeMethodDescriptionvoidAdds a parameter with the specified name and value to this encoder.private voidappendEncoded(int b) private static booleandontNeedEncoding(char ch) Determines whether the given character is a unreserved character.private voidprivate voidEncode the String as per RFC 3986, Section 2.private voidprivate voidencodeUtf8Component(CharSequence s, int encodingStart, int len) private voidencodeUtf8ComponentSlow(CharSequence s, int start, int len) private static charforDigit(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 voidwriteUtf8Surrogate(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
-
-
Method Details
-
addParam
-
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%20beyond that , this method reuse theuriBuilderin 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
charrepresentation 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
-