我需要发送get请求到 example.com/api
查询参数名为 test[]
为此,我使用Spring休息tepmlate
UriComponentsBuilder builder = UriComponentsBuilder
.fromUriString(example.com/api)
.queryParam(test[], "test");
responseEntity = restTemplate.exchange(builder.toUriString(), HttpMethod.GET,
new HttpEntity<>(this.setHttpHeader()),
new ParameterizedTypeReference<List<MyDTO>>() {
});
但是 builder.toUriString()
返回 example.com/api?test%5B%5D=test
我试着用我的方法来代替srting
private String repairUri(String uri) {
return url.replaceAll("%5B%5D", "[]");
}
打电话给我
responseEntity = restTemplate.exchange(repairUri(builder.toUriString()), HttpMethod.GET,
new HttpEntity<>(this.setHttpHeader()),
new ParameterizedTypeReference<List<MyDTO>>() {
});
但是这个uri转换为resttemplate.exchange() example.com/api?test%5B%5D=test
再一次。
同时我很容易发送 example.com/api?test[]=test
Postman 的要求和它的工作。
如何向发送请求 example.com/api?test[]=test
在Spring?
2条答案
按热度按时间a0zr77ik1#
我找到了一个解决办法。在resttemplate bean定义中,我添加了以下设置:
在这一页有人说
DefaultUriBuilderFactory.EncodingMode.NONE
也很合适。阅读更多链接。vs3odd8k2#
换个衣服就行了
repairUri
方法在调用restTemplate.exchange
对此: