Анализ строки запроса с HTTPclient для извлечения nameValuePairs - PullRequest
7 голосов
/ 02 июня 2010

Существует ли утилита Apache, которая принимает строку запроса и некоторое кодирование и возвращает Map of key, значение [] url декодируется?

Ответы [ 2 ]

8 голосов
/ 10 ноября 2014

Если вы используете версию 4.x HttpClient, вам нужно будет использовать URLEncodedUtils.parse(). Он принимает URI (или строку + кодировку) и возвращает список NameValuePairs.

8 голосов
/ 02 июня 2010

устарело, но вы можете использовать HttpUtils.parseQueryString .

Отображает имена параметров в значения. Если параметр появляется более одного раза, значение является массивом.

РЕДАКТИРОВАТЬ: вышеуказанный метод устарел, потому что он не позволяет указывать кодировку символов.

В проекте HttpClient в apache есть классы, необходимые для этого.

Используйте URIUtil.decode (Строковые данные, Строковое кодирование) для декодирования строки запроса.

Затем ParameterParser.parse (запрос строки, разделитель символов) , чтобы получить список NameValuePair s. Затем вы можете поместить их в коллекцию Commons MultiMap , указав имя параметра. (Вы можете использовать обычную хэш-карту, но для этого требуется больше кода для обработки нескольких значений на ключ.)

...