我们的代码如下使用Asyncresttemplate
String uri = http://api.host.com/version/test?address=%23&language=en-US&format=json
getAysncRestTemplate().getForEntity(uri, String.class);
但是%23
在Rest模板中被双重编码为%2523
,URL变为
http://api.host.com/version/test?address=%2523&language=en-US&format=json
,
但是我需要传递编码后的字符串,如果传递解码后的数据“#”,则不会编码
如何在不对URL进行双重编码的情况下发送此请求?
已经尝试使用UriComponentsBuilder Avoid Double Encoding of URL query param with Spring's RestTemplate
答案 0 :(得分:1)
您可以通过不对自己的任何部分进行编码来避免这种情况,例如使用#
而不是%23
答案 1 :(得分:0)
根据JavaDoc,传递给timestamp
的{{1}}参数(类型为uri
)实际上是URI template 。在没有双重编码的情况下使用rest模板的方式如下:
String
如果您知道已经有正确编码的URL,则可以使用将RestTemplate
作为第一个参数的方法:
getAysncRestTemplate().getForEntity(
"http://api.host.com/version/test?address={address}&language=en-US&format=json",
String.class,
"%23");