URLEncodedUtils.parse(uri, encoding)是否以 URL 中提到的相同顺序返回参数?它是否返回具有重复名称的参数的所有值?
问问题
1106 次
2 回答
3
public static void parse (
final List <NameValuePair> parameters,
final Scanner scanner,
final String encoding) {
scanner.useDelimiter(PARAMETER_SEPARATOR);
while (scanner.hasNext()) {
final String[] nameValue = scanner.next().split(NAME_VALUE_SEPARATOR);
if (nameValue.length == 0 || nameValue.length > 2)
throw new IllegalArgumentException("bad parameter");
final String name = decode(nameValue[0], encoding);
String value = null;
if (nameValue.length == 2)
value = decode(nameValue[1], encoding);
parameters.add(new BasicNameValuePair(name, value));
}
}
正如您在 parse-function 中看到的,它保留了 URL 中参数的顺序。但这是一个实现细节,没有记录,所以它可以在没有警告的情况下更改。你真的不应该在你的代码中依赖这种行为。
于 2011-08-03T13:03:18.463 回答
0
由于它返回一个列表,它应该按顺序返回名称-值对,并且还应该返回重复项。
但是,您不应依赖参数的顺序,而应通过它们的名称访问它们。无论如何,重复都是不好的,即lang=en&lang=de
意味着什么?如果您需要一个列表,您最好执行类似的操作languages=en,de
或提供更好的参数名称。
于 2011-08-03T12:16:06.413 回答