При работе с веб-приложениями Java вы можете столкнуться с ужасной ошибкой «java.lang.IllegalArgumentException: в цели запроса найден недопустимый символ». Эта ошибка возникает, когда в цели запроса, которая является частью URL-адреса, расположенного после имени домена, присутствуют недопустимые символы. В этой записи блога мы рассмотрим несколько способов решения этой проблемы и приведем примеры кода.
- Кодировка URL:
Одной из распространенных причин ошибки «java.lang.IllegalArgumentException» являются незакодированные или неправильно закодированные символы в цели запроса. Чтобы исправить это, вы можете использовать класс URLEncoderдля правильного кодирования параметров URL перед отправкой запроса. Вот пример:
String encodedParam = URLEncoder.encode(param, "UTF-8");
String requestUrl = baseUrl + "/endpoint?param=" + encodedParam;
- Параметры декодирования URL:
Если вы получаете запрос с недопустимым символом в цели запроса, возможно, вам придется декодировать параметры URL. Используйте класс URLDecoderдля декодирования параметров перед их обработкой. Вот пример:
String decodedParam = URLDecoder.decode(param, "UTF-8");
- Регулярные выражения:
Регулярные выражения можно использовать для удаления или замены недопустимых символов в цели запроса. Вы можете определить шаблон, соответствующий недопустимым символам, а затем использовать метод replaceAll()для их удаления или замены. Вот пример:
String cleanedTarget = requestTarget.replaceAll("[^a-zA-Z0-9_-]", "");
- Пользовательская проверка:
Реализация специального механизма проверки может помочь предотвратить попадание недопустимых символов в цель запроса. Вы можете определить набор разрешенных символов и проверить цель запроса на соответствие этому набору. Вот пример:
Set<Character> allowedChars = new HashSet<>(Arrays.asList('a', 'b', 'c', ...));
for (char c : requestTarget.toCharArray()) {
if (!allowedChars.contains(c)) {
// Handle invalid character
}
}
Ошибка «java.lang.IllegalArgumentException: в цели запроса найден недопустимый символ» может раздражать при работе с веб-приложениями Java. Однако, используя такие методы, как кодирование URL-адресов, декодирование, регулярные выражения и пользовательскую проверку, вы можете эффективно справиться и устранить эту проблему. Не забывайте всегда следить за тем, чтобы цель запроса содержала только допустимые символы, чтобы обеспечить целостность и безопасность вашего веб-приложения.