Расшифровка строки запроса URI в Java
Мне нужно декодировать URI, который содержит строку запроса; ожидаемое поведение ввода / вывода выглядит примерно так:
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();
}
Я пытался использоватьjava.net.URI, но кажется, что он декодирует строку запроса, поэтому в приведенном выше примере у меня осталось «alias = pos & FirstName = Foo + A & B = C & LastName = Bar», поэтому существует неопределенность, является ли «&» разделителем запросов или символом в компонент запроса.
Редактировать: Я только что попробовалURI.getRawQuery () и это не делает кодировку, поэтому я могу разделить строку запроса с&
но что тогда мне делать? Javascript имеетdecodeURIComponentЯ не могу найти соответствующий метод в Java.
Какие-либо предложения? Я бы предпочел не использовать какие-либо новые библиотеки.