Передать # в URL в параметре запроса в ResponseEntity

149
20 мая 2019, 03:50

Есть у меня такой url:

bookManag/book?name=world and war #2&field=1

передаю в параметре name - world and war #2 проблема в том, что после # всё обрезается и следующий параметр field не приходит. Хорошо, я нашёл как выйти из этой ситуации и заменил решётку на %23

bookManag/book?name=world and war %232&field=1

Но основная проблема не в этом, пытаюсь получить ответ через ResponseEntity

    String url = "http://localhost:8081/bookManag/book?name=world and war %232&field=1";
    org.springframework.http.ResponseEntity result = restTemplate.exchange(url, HttpMethod.GET, entity, getRespType(), params);

После и происходит ошибка уже внутри спринга, вместо моего правильного url, spring его переделывает в

"http://localhost:8081/bookManag/book?name=world and war %20%25232&field=1"

заменяя %23 на %2523, что в итоге дает не правильный результат. Как исправить эту проблему?

Answer 1

Для кодирования URL надо использовать URLEncoder, в частности его метод encode Вам достаточно прогнать через encode только часть URL-а c решеткой

String url = "http://localhost:8081/bookManag/book?name=" + URLEncoder.encode("world and war #2", "UTF-8") + "&field=1";

В результате у Вас получится строка вида http://localhost:8081/bookManag/book?name=world+and+war+%232&field=1, которая вполне себе валидный URL

READ ALSO
Обработк ошибок на jquery-ajax + JAX-RS

Обработк ошибок на jquery-ajax + JAX-RS

Кто может поделитесь простым примером, как вы отправляете информативное сообщение, в случае обработки запроса ajax, когда нужно вернуть ошибку

138
Сортировка сообщений в ArrayList

Сортировка сообщений в ArrayList

Есть кастомный адаптер для лист вью в который добавляются сообщенияПоследовательность сообщений идет сверху вниз

176