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