public class UrlQuerySanitizer
extends Object
java.lang.Object | |
↳ | android.net.UrlQuerySanitizer |
清理URL的查询部分。 简单示例: UrlQuerySanitizer sanitizer = new UrlQuerySanitizer(); sanitizer.setAllowUnregisteredParamaters(true); sanitizer.parseUrl("http://example.com/?name=Joe+User"); String name = sanitizer.getValue("name")); // name now contains "Joe_User"
注册ValueSanitizers以自定义各个参数的消毒方式: UrlQuerySanitizer sanitizer = new UrlQuerySanitizer(); sanitizer.registerParamater("name", UrlQuerySanitizer.createSpaceLegal()); sanitizer.parseUrl("http://example.com/?name=Joe+User"); String name = sanitizer.getValue("name")); // name now contains "Joe User". (The string is first decoded, which // converts the '+' to a ' '. Then the string is sanitized, which // converts the ' ' to an '_'. (The ' ' is converted because the default unregistered parameter sanitizer does not allow any special characters, and ' ' is a special character.)
有几种创建ValueSanitizer的方法。 为了增加复杂性:
Nested classes |
|
---|---|
class |
UrlQuerySanitizer.IllegalCharacterValueSanitizer 根据它们包含的字符来净化值。 |
class |
UrlQuerySanitizer.ParameterValuePair 一个保存参数 - 值对的简单元组。 |
interface |
UrlQuerySanitizer.ValueSanitizer 用于清理单个查询值的函子。 |
Public constructors |
|
---|---|
UrlQuerySanitizer() 构造一个UrlQuerySanitizer。 |
|
UrlQuerySanitizer(String url) 构造一个UrlQuerySanitizer并分析一个URL。 |
Protected methods |
|
---|---|
void |
addSanitizedEntry(String parameter, String value) 记录消毒的参数值对。 |
void |
clear() 清除现有条目。 |
int |
decodeHexDigit(char c) 将表示十六进制数字的字符转换为整数。 |
boolean |
isHexDigit(char c) 测试一个字符是否为十六进制数字。 |
void |
parseEntry(String parameter, String value) 解析转义的参数值对。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
UrlQuerySanitizer ()
构造一个UrlQuerySanitizer。
默认值:
UrlQuerySanitizer (String url)
构造一个UrlQuerySanitizer并分析一个URL。 为了方便,默认的解析行为是可接受的。
由于URL在构造函数返回之前被解析,因此没有机会配置清理程序来更改解析行为。
UrlQuerySanitizer sanitizer = new UrlQuerySanitizer(myUrl); String name = sanitizer.getValue("name");
默认值:
Parameters | |
---|---|
url |
String
|
UrlQuerySanitizer.ValueSanitizer getAllButNulAndAngleBracketsLegal ()
返回一个值清理器,允许除尖括号('<'和'>')和Nul('\ 0')以外的任何特殊字符。 允许脚本URL。
Returns | |
---|---|
UrlQuerySanitizer.ValueSanitizer |
a value sanitizer |
UrlQuerySanitizer.ValueSanitizer getAllButNulLegal ()
返回一个值清理器,允许除Nul('\ 0')字符之外的所有内容。 脚本网址是允许的。
Returns | |
---|---|
UrlQuerySanitizer.ValueSanitizer |
a value sanitizer |
UrlQuerySanitizer.ValueSanitizer getAllButWhitespaceLegal ()
返回一个值清理器,允许除Nul('\ 0')字符,空格('')和其他空白字符以外的所有内容。 脚本网址是允许的。
Returns | |
---|---|
UrlQuerySanitizer.ValueSanitizer |
a value sanitizer |
UrlQuerySanitizer.ValueSanitizer getAllIllegal ()
返回不允许任何特殊字符的值清理程序,也不允许脚本URL。
Returns | |
---|---|
UrlQuerySanitizer.ValueSanitizer |
a value sanitizer |
boolean getAllowUnregisteredParamaters ()
获取是否允许未注册的参数。 如果不允许,当查询被解析时它们将被删除。
Returns | |
---|---|
boolean |
true if unregistered parameters are allowed. |
UrlQuerySanitizer.ValueSanitizer getAmpAndSpaceLegal ()
返回一个不允许除&符号('&')和空格('')以外的任何特殊字符的值清理程序。 不允许脚本网址。
Returns | |
---|---|
UrlQuerySanitizer.ValueSanitizer |
a value sanitizer |
UrlQuerySanitizer.ValueSanitizer getAmpLegal ()
返回一个不允许任何特殊字符('&')除外的值清理程序。 不允许脚本网址。
Returns | |
---|---|
UrlQuerySanitizer.ValueSanitizer |
a value sanitizer |
UrlQuerySanitizer.ValueSanitizer getEffectiveValueSanitizer (String parameter)
获取参数的有效值消毒剂。 像getValueSanitizer一样,除非没有为参数注册值清除程序,并且允许未注册的参数,则会返回默认值清理程序。
Parameters | |
---|---|
parameter |
String : an unescaped parameter |
Returns | |
---|---|
UrlQuerySanitizer.ValueSanitizer |
the effective value sanitizer for a parameter. |
List<UrlQuerySanitizer.ParameterValuePair> getParameterList ()
已清理查询中所有参数值对的数组列表,按它们在查询中出现的顺序排列。 可能包含重复的参数。
注意:不要修改此列表。 将其视为只读列表。
Returns | |
---|---|
List<UrlQuerySanitizer.ParameterValuePair> |
Set<String> getParameterSet ()
获取已清理查询中的所有参数集。
注意:不要修改这个集合。 将其视为只读集。
Returns | |
---|---|
Set<String> |
all the parameters found in the current query. |
boolean getPreferFirstRepeatedParameter ()
获取是否首选出现重复参数。
Returns | |
---|---|
boolean |
true if the first occurrence of a repeated parameter is preferred. |
UrlQuerySanitizer.ValueSanitizer getSpaceLegal ()
返回一个不允许除空格('')以外的任何特殊字符的值清理程序。 不允许脚本网址。
Returns | |
---|---|
UrlQuerySanitizer.ValueSanitizer |
a value sanitizer |
UrlQuerySanitizer.ValueSanitizer getUnregisteredParameterValueSanitizer ()
获取处理未注册参数值时使用的当前值消毒剂。
注意:默认的未注册参数值清理器不允许任何特殊字符,类似于通过调用createAllIllegal返回的内容。
Returns | |
---|---|
UrlQuerySanitizer.ValueSanitizer |
the current ValueSanitizer used to sanitize unregistered parameter values. |
UrlQuerySanitizer.ValueSanitizer getUrlAndSpaceLegal ()
返回值sanitizer,允许编码的URL使用所有字符并允许空格,这在编码的URL中在技术上不合法,但通常会出现。 不允许脚本网址。
Returns | |
---|---|
UrlQuerySanitizer.ValueSanitizer |
a value sanitizer |
UrlQuerySanitizer.ValueSanitizer getUrlLegal ()
返回值sanitizer,允许编码的URL使用所有字符。 不允许脚本网址。
Returns | |
---|---|
UrlQuerySanitizer.ValueSanitizer |
a value sanitizer |
String getValue (String parameter)
获取当前清理查询中参数的值。 如果参数未退出,则返回null。
Parameters | |
---|---|
parameter |
String : the unencoded name of a parameter. |
Returns | |
---|---|
String |
the sanitized unencoded value of the parameter, or null if the parameter does not exist. |
UrlQuerySanitizer.ValueSanitizer getValueSanitizer (String parameter)
获取参数的价值净化器。 如果没有为参数注册值清理程序,则返回null。
Parameters | |
---|---|
parameter |
String : the unescaped parameter |
Returns | |
---|---|
UrlQuerySanitizer.ValueSanitizer |
the currently registered value sanitizer for this parameter. |
boolean hasParameter (String parameter)
检查当前清理查询中是否存在参数。
Parameters | |
---|---|
parameter |
String : the unencoded name of a parameter. |
Returns | |
---|---|
boolean |
true if the paramater exists in the current sanitized queary. |
void parseQuery (String query)
解析查询。 查询字符串是任意数量的由任意非零数的和号分隔的参数值子句。 参数值子句是一个参数,后跟一个等号,后跟一个值。 如果等号丢失,则该值被假定为空字符串。
Parameters | |
---|---|
query |
String : the query to parse. |
void parseUrl (String url)
从编码的URL中解析查询参数。 通过从URL中提取查询部分并调用parseQuery()来工作。 如果没有查询部分,则将其视为查询部分是空字符串。
Parameters | |
---|---|
url |
String : the encoded URL to parse. |
void registerParameter (String parameter, UrlQuerySanitizer.ValueSanitizer valueSanitizer)
为特定参数注册一个值清理程序。 也可以用来替换或删除已经设定的价值净化剂。
为特定参数注册非空值消毒杀菌剂会使该参数成为注册参数。
Parameters | |
---|---|
parameter |
String : an unencoded parameter name |
valueSanitizer |
UrlQuerySanitizer.ValueSanitizer : the value sanitizer to use for a particular parameter. May be null in order to unregister that parameter. |
void registerParameters (String[] parameters, UrlQuerySanitizer.ValueSanitizer valueSanitizer)
为一组参数注册一个值清理器。
Parameters | |
---|---|
parameters |
String : An array of unencoded parameter names. |
void setAllowUnregisteredParamaters (boolean allowUnregisteredParamaters)
设置是否允许未注册的参数。 如果它们不被允许,那么当查询被消毒时它们将被丢弃。
默认为false。
Parameters | |
---|---|
allowUnregisteredParamaters |
boolean : true to allow unregistered parameters. |
void setPreferFirstRepeatedParameter (boolean preferFirstRepeatedParameter)
设置是否首选出现重复参数。 True表示首选重复参数。 假意味着最后重复的参数是首选。
首选参数是调用getParameter时返回的参数。
默认为false。
Parameters | |
---|---|
preferFirstRepeatedParameter |
boolean : True if the first repeated parameter is preferred. |
void setUnregisteredParameterValueSanitizer (UrlQuerySanitizer.ValueSanitizer sanitizer)
设置处理未注册参数值时使用的值清理程序。
Parameters | |
---|---|
sanitizer |
UrlQuerySanitizer.ValueSanitizer : set the ValueSanitizer used to sanitize unregistered parameter values. |
String unescape (String string)
使用逃脱的字符串。
Parameters | |
---|---|
string |
String : the escaped string |
Returns | |
---|---|
String |
the unescaped string. |
void addSanitizedEntry (String parameter, String value)
记录消毒的参数值对。 覆盖,如果你想做额外的过滤或验证。
Parameters | |
---|---|
parameter |
String : an unescaped parameter |
value |
String : a sanitized unescaped value |
int decodeHexDigit (char c)
将表示十六进制数字的字符转换为整数。 如果该字符不是十六进制数字,则返回-1。 大写和小写十六进制数字都是允许的。
Parameters | |
---|---|
c |
char : the hexidecimal digit. |
Returns | |
---|---|
int |
the integer value of the hexidecimal digit. |
boolean isHexDigit (char c)
测试一个字符是否为十六进制数字。 大写和小写十六进制数字都是允许的。
Parameters | |
---|---|
c |
char : the character to test |
Returns | |
---|---|
boolean |
true if c is a hex digit. |
void parseEntry (String parameter, String value)
解析转义的参数值对。 默认实现会同时使参数和值都出现,然后查找参数的有效值清理程序并使用它来清理该值。 如果一切顺利,则使用未转义的参数和消毒的非转义值调用addSanitizedValue。
Parameters | |
---|---|
parameter |
String : an escaped parameter |
value |
String : an unsanitzied escaped value |