Эта проблема касается запроса HTTP PUT. Я передаю свой URL, параметры запроса и тело методу buildURI ().
private URI buildURI(String url, Map<String, Object> queryParameters, T body) {
try {
String bodyString = null;
if (body != null) {
bodyString = objectMapper.writeValueAsString(body);
}
} catch (JsonProcessingException e) {
System.out.println(e);
}
UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromUriString(url);
if ((queryParameters != null) && (!queryParameters.isEmpty())) {
queryParameters.forEach((a, b) -> uriComponentsBuilder.queryParam(a, b));
}
return uriComponentsBuilder.encode().buildAndExpand().toUri();
}
Наличие зарезервированных символов (& =%) может помешать правильному анализу строки URI. Чтобы заменить эти символы, я использовал этот UriComponentsBuilder.fromUriString (url). Проблема в том, что список символов не содержит «@».
Мой URL-адрес http://1.1.1.1: 1111 / xx / xx / save / abc@gmail.com. Мне также нужно заменить @.
Но если я кодирую @, а затем вызываю buildURI (), это дает URL-адрес в виде http://1.1.1.1: 1111 / xx / xx / save / abc% 2540gmail.com . (из-за двойного кодирования)
Вызов этого buildURI () является обязательным, поскольку я использую общий код. Мне нужно в любом случае закодировать этот «@» и получить URL-адрес как http://1.1.1.1: 1111 / xx / xx / save / abc% 40gmail.com .
Пожалуйста, дайте мне решение.