如何使用 RestTemplate 发送带有路径变量和查询参数的获取请求?

How do I send a get request with path variables and query parameters using RestTemplate?

我正在尝试发送以下请求,但我收到一条消息说我有一个“不明确的 URI 路径编码”。

这是获取请求:

ResponseEntity<CarDetail> carDetails = restTemplate.exchange(
                                                    builder.toUriString(),
                                                    HttpMethod.GET,
                                                    requestEntity,
                                                    CarDetail.class,
                                                    carId, ownerId);

builder是这样的:

UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url)
                .queryParam("from", "2019-04-12T10:15:51.000Z")
                .queryParam("to", "2019-04-14T10:15:51.000Z");

和url是这样的:

http://cars.com/car/{carId}/owner/{ownerId}/period

我一直在试图找出问题所在,但无法弄清楚,任何帮助将不胜感激。


更新builder.toUriString() 返回这个:

http://cars.com/car/%7BcarId%7D/owner/%7BownerId%7D/period?from=2019-04-12T10:15:51.000Z&to=2019-04-14T10:15:51.000Z

我认为问题出在 %7B 上。有什么建议吗?

我使用 builder.buildAndExpand(carVariable).toUri()

解决了这个问题

解决方案如下所示:

ResponseEntity<CarDetail> carDetails = restTemplate.exchange(
       builder.buildAndExpand(carVariable).toUri(),
       HttpMethod.GET,
       requestEntity,
       CarDetail.class);