reading query parse from java url parsing query-string

query - reading from url java



¿Alternativa a la depreciación de javax.servlet.http.HttpUtils.parseQueryString? (4)

Bueno, como mencionas que la URL no proviene de una solicitud de servlet, la respuesta correcta es, como de costumbre, depende .

El problema con la parte de consulta de una URL es que no hay una especificación clara sobre cómo manejar la duplicación de parámetros.

Por ejemplo, considere una url como esta:

http://www.example.com?param1=value1&param2=value2&param1=value3

¿Qué esperas como valor para param1? el primer valor, el último, una matriz? El problema es que, de acuerdo con las especificaciones, todas estas respuestas son válidas y el proveedor del servidor es libre de admitir una u otra. Algunos usan la notación param1 [] para indicar que debe tratarse como una matriz, pero nuevamente, esta no es una solución unificada.

Entonces, la "mejor" solución es saber cómo su destino maneja los parámetros, e imitar el comportamiento con una clase de utilidad hecha a sí misma.

Estoy buscando analizar una URL para obtener una colección de los parámetros de la cadena de consulta en Java. Para que quede claro, necesito analizar una URL determinada (o el valor de cadena de un objeto de URL), no la URL de una solicitud de servlet.

Parece que el método javax.servlet.http.HttpUtils.parseQueryString sería la elección obvia, pero ha quedado obsoleto.

¿Existe un método alternativo que me falta, o simplemente se ha desaprobado sin una función equivalente de reemplazo / mejorada?


Creo que la idea es usar HttpServletRequest en su lugar. Están los métodos getParameterMap (), getParameterNames () y getParameterValues ​​() para comenzar.

También existe el método getParameter (String paramname) para obtener el valor de un método específico.

Estos no hacen distinción entre los parámetros de la cadena de consulta y los parámetros de forma, así que si tu intención era buscar una cadena de consulta en particular, entonces supongo que esto no ayudaría.


Por lo que yo sé, no hay uno.

Sin embargo, no debería ser demasiado difícil escribir uno. La parte más difícil, me imagino, sería decodificar el nombre / valores de la URL (que realmente no es tan difícil, si lo piensas), y puedes usar java.net.URLDecoder#decodeURL(String,String) para eso.