У меня есть приложение весенней загрузки с сервисом GET.
@RequestMapping(value = "/abc/track/{type}", method = RequestMethod.GET)
public void DummFunc(
@RequestParam(value="subs", required = false) String sub,
, HttpServletResponse response) {}
значение для subs
является закодированным значением.
Если я передам следующее в качестве значения параметра subs
{%22endpoint%22:%22https://def.abc.com/tyu/send/eD3vpGNQW28:APA91bHOo8rYrV0xccdQz3okjZJG-QGrJX8LG6ahJnEUpMNfGedqi3hJxQsJx_8BMbH6oDjaSPPEXqzNWchWrGSkhuTkSdemikkys1U22Ipd7MsRw0owWbw89V2fslIVAJ6G5lkyvYuQ%22,%22expirationTime%22:null,%22keys%22:{%22p256dh%22:%22BK0pktn50CMsTQtqwdPlKlJtdFs0LFeXX14T1zgoz6QWnvSTp5dxtChnUP5P1JX0TsjcopbdPKyN31HfABMUyic%22,%22auth%22:%22qbO_z0vGao9wD-E5g8VU-A%22}}
Не удается захватить запрос, и управление не входит в функцию.
Если вместо этого мы передадим значение в параметрах sub:
%7B%22endpoint%22:%22https://def.abc.com/tyu/send/dX5q5eV7hFQ:APA91bHib-0QXrMzjatcvTR_uaIeeJK8lf6GmXUC9Jxv0Oxth-BzD4GmWnd4-YpDZv8qSFZ0eSg9mB2YkRvkc5ezdXW5KeaHjuQZfdyDxyBXjJgE-25Xbtlk37pdm8vfLk20k0k_VxW9%22,%22expirationTime%22:null,%22keys%22:%7B%22p256dh%22:%22BCCvcBLpRqp4u0auP688_MUJLsAiwWlQSn5kpyl8YVsEo_J-KpSdnhCmVIE_BhDXBcFYflPK52hqhYf3EaOCyuY%22,%22auth%22:%22iKuW_ESkCZnubWcQu_JK8w%22%7D%7D
Работает нормально.
Почему это происходит? Что не так с первой кодировкой?
Поскольку сервер не может обработать запрос, он возвращает 400. Мне нужно перехватить такие запросы, а затем обработать их, правильно их кодировав. Каким может быть путь вперед?
Я новичок в Spring boot / Spring и самой Java. Было бы здорово, если бы я мог получить некоторое представление.
Кроме того, я могу без проблем декодировать их оба онлайн - https://www.urldecoder.org/
Редактировать: В основном, запрос, по которому получен запрос, имеет {
и }
вместо %7B
и %7D
.
Мой вопрос - вместо сбоя приложения с 400 ошибочными запросами, как мне записать такие запросы в моем приложении, правильно их кодировать и затем обработать.