URLEncodedUtils.parse(uri, encoding)是否以URL中提到的相同顺序返回参数?
并返回具有重复名称的参数的所有值吗?

最佳答案

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函数中所见,它保留了URL中参数的顺序。但这是实现的详细信息,没有文档记录,因此可以在不发出警告的情况下进行更改。您确实不应在代码中依赖该行为。

10-02 21:34