Necesito decodificar un URI que contiene una cadena de consulta; comportamiento de la entrada/salida esperada es algo como lo siguiente:Cadena de consulta URI de decodificación en Java
abstract class URIParser
{
/** example input:
* something?alias=pos&FirstName=Foo+A%26B%3DC&LastName=Bar */
URIParser(String input) { ... }
/** should return "something" for the example input */
public String getPath();
/** should return a map
* {alias: "pos", FirstName: "Foo+A&B=C", LastName: "Bar"} */
public Map<String,String> getQuery();
}
He intentado usar java.net.URI, pero parece que para decodificar la cadena de consulta por lo que en el ejemplo anterior me quedo con "alias = pos & Nombre = Foo + A & B = C & LastName = Barra "entonces hay ambigüedad si un" & "es un separador de consulta o es un caracter en un componente de consulta.
Editar: que acaba de intentar URI.getRawQuery() y no lo hace la codificación, por lo que se puede dividir la cadena de consulta con un &
, pero entonces ¿qué hago? Javascript tiene decodeURIComponent, parece que no puedo encontrar el método correspondiente en Java.
¿Alguna sugerencia? Preferiría no usar ninguna biblioteca nueva.
Dado que no desea para introducir nuevas bibliotecas, ¿puedo preguntar en qué entorno recibe estas URI? – stacker