Вопрос:

Замените пространство для% 20 весной на UriCompnentsBuilder

spring spring-boot

243 просмотра

1 ответ

16 Репутация автора

У меня есть метод, который принимает некоторые параметры и формирует из них URI для доступа к нашей клиентской службе REST. Может возникнуть один из этих параметров пробела. Проблема в том, что UriComponentsBuilder.pathSegment игнорирует пространство. Итак, скажем, 'v1', ' ', 'v2'... сформировал бы URI .../v1/v2вместо /v1/%20/v2. Если я %20перейду непосредственно к pathSegment, он заменит% 2520. Это моя функция

 private String getJsonStringFromDetranRestParams(String url, String... params) {

    URI targetUrl = UriComponentsBuilder.fromUriString(url).pathSegment(params).build().encode().toUri();
    String json = restTemplate.getForObject(targetUrl, String.class);

    return json;
}

Есть ли какой-либо «escape-символ» для функции, чтобы он видел %20правильную строку вместо специальной строки. Я ищу \\эквивалент Java.

Автор: GordonBR Источник Размещён: 28.12.2017 01:47

Ответы (1)


3 плюса

10165 Репутация автора

Просто используйте, build()чтобы вернуть его как String, пробел будет игнорироваться, если pathSegmentвам нужно пройти%20

String targetUrl = UriComponentsBuilder.fromUriString("http://localhost:8080").pathSegment("v1","%20","v2").build().toUriString();
System.out.println(targetUrl);  //http://localhost:8080/v1/%20/v2

или использовать build(true)для кодирования

 URI targetUrl = UriComponentsBuilder.fromUriString("http://localhost:8080").pathSegment("v1","%20","v2").build(true).toUri();
System.out.println(targetUrl); ////http://localhost:8080/v1/%20/v2
Автор: Deadpool Размещён: 18.05.2019 04:10
Вопросы из категории :
32x32