Одна из распространенных задач в программировании — это разбор строки URI и преобразование ее в коллекцию пар ключ-значение. Рассмотрим, как можно решить эту задачу на языке Java.
Пример задачи
Представим, что есть следующий URI:
https://example.com/oauth/authorize?client_id=abc&response_type=code&scope=full&access_type=offline&redirect_uri=http://localhost/Callback
И требуется получить коллекцию, где каждый параметр URI будет представлен в виде пары ключ-значение. Например:
client_id abc
response_type code
scope full
access_type offline
redirect_uri http://localhost/Callback
Решение задачи
В Java для решения этой задачи можно использовать класс java.net.URI
и java.util.Map
.
Для начала создадим объект URI
из строки:
URI uri = new URI("https://example.com/oauth/authorize?client_id=abc&response_type=code&scope=full&access_type=offline&redirect_uri=http://localhost/Callback");
Теперь, чтобы получить параметры запроса, вызовем метод getQuery
:
String query = uri.getQuery();
Эта строка содержит параметры запроса, разделенные символом «&». Теперь эти параметры можно разбить на отдельные пары ключ-значение:
String[] params = query.split("&");
После этого можно создать Map
, в котором ключами будут имена параметров, а значениями — их значения:
Map<String, String> map = new HashMap<>(); for (String param : params) { String[] p = param.split("="); map.put(p[0], p[1]); }
Таким образом, в map
будет содержаться коллекция пар ключ-значение, соответствующая параметрам URI.
Пожалуйста, обратите внимание, что этот код не обрабатывает возможные исключения, которые могут возникнуть, если URI неверно сформирован или если параметры запроса отсутствуют или имеют неправильный формат. В реальном приложении такие ситуации должны быть должным образом обработаны.
Добавить комментарий