Мне нужно декодировать 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.
Любые предложения? Я бы предпочел не использовать какие-либо новые библиотеки.