2010-06-02 13 views
7

¿Hay alguna utilidad Apache que tome Query String y alguna codificación y devuelva Map of key, valor [] url decodificado?Cadena de consulta Parse con HTTPclient para extraer nameValuePairs

+0

¿Estás teniendo algún tipo de problema de codificación con los valores recuperados a través del método getParameter de HttpServletRequest? – Powerlord

+0

@Powerlord tal vez no esté en un entorno de servlet. –

+1

@JaimeHablutzel [tag: tomcat] está en las etiquetas. – Powerlord

Respuesta

7

Está en desuso, pero puede usar HttpUtils.parseQueryString.

Registra los nombres de los parámetros en valores. Si el parámetro aparece más de una vez, el valor es una matriz.

EDITAR: El método anterior está en desuso porque no le permite especificar la codificación de caracteres.

El proyecto HttpClient en apache tiene las clases que necesita para lograr esto.

Use URIUtil.decode(String data, String encoding) para decodificar la cadena de consulta.

Luego ParameterParser.parse(String query, char separator) para obtener una lista de NameValuePair s. Luego puede ponerlos en una Colección de Commons MultiMap, marcada por el nombre del parámetro. (Puede usar un mapa hash regular, pero eso involucra más código para manejar múltiples valores por clave.)

+2

¿Qué hay de http://www.docjar.com/docs/api/org/apache/catalina/util/RequestUtil.html#parseParameters%28Map,%20byte,%20String%29? –

+0

sí, ¡eso es lo que quería escribir! :) – mdma

+0

Pero, no hice mi aplicación para depender de tomcat libs, ¿está expuesto en otro lado? –

7

Si está utilizando una versión 4.x de HttpClient, querrá usar URLEncodedUtils.parse(). Toma un URI (o string + charset) y devuelve una lista de NameValuePairs.

Cuestiones relacionadas