Pregunta

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, debo 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 opción obvia, pero ha quedado en desuso.

¿Hay algún método alternativo que me esté faltando o simplemente se haya desaprobado sin una función equivalente de reemplazo / mejora?

¿Fue útil?

Solución

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 de estas u otras. Algunos usan la notación param1 [] para indicar que se debe tratar como una matriz, pero nuevamente, esta no es una solución unificada.

Así que el " mejor " La solución es saber cómo su destino maneja los parámetros e imitar el comportamiento con una clase de utilidad hecha por sí misma.

Otros consejos

Creo que la idea es utilizar HttpServletRequest en su lugar. Hay 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.

Esto no hace 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, supongo que esto no ayudaría.

Por lo que sé, no hay uno.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top