<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.0.RELEASE</version>
	</parent>
Instruisez l'encodage avec  encode </ code>.
URI target = UriComponentsBuilder.newInstance()
        .scheme("http")
        .host("example.com")
        .queryParam("foo", "b&r")
        .build()
        .encode()
        .toUri();
System.out.println(target);// http://example.com?foo=b%26r
Pour utiliser  fromUri </ code> dans une URL encodée, spécifiez  true </ code> dans  build (boolean encoded) </ code>.
URI source = new URI("http://example.com?foo=b%26r");
URI target = UriComponentsBuilder
        .fromUri(source)
        .build(true)
        .toUri();
System.out.println(target);// http://example.com?foo=b%26r
Si  encode </ code> n'est pas spécifié, aucun encodage ne sera effectué.
URI target = UriComponentsBuilder.newInstance()
        .scheme("http")
        .host("example.com")
        .queryParam("foo", "b&r")
        .build()
        .toUri();
System.out.println(target); // http://example.com?foo=b&r
Si vous transmettez une URL encodée avec  fromUri </ code> et ne spécifiez pas  true </ code> pour  build (boolean encoded) </ code>, l'encodage se produira. Par conséquent, un  double codage </ b> est effectué.
URI source = new URI("http://example.com?foo=b%26r");
URI target = UriComponentsBuilder
        .fromUri(source)
        .build()
        .toUri();
System.out.println(target);// http://example.com?foo=b%2526r
[SPR-14256] Doc: UriComponentsBuilder does not encode query parameters - Spring JIRA
Recommended Posts