我正在从一个Web服务向另一个Web服务发出一个GET
请求,我需要传递一个值中有&符号的参数。例如GET http://sandwich.com?flavor=[value]
,其中[value]
应为PB& J。但是,使用Spring的RestTemplate
执行此操作似乎是不可能的。
当我通过cURL
进行此调用时,我只需将与符号替换为%26
,i。即flavor=PB%26J
。
然而,当我将URL传递给Spring的RestTemplate.exchange(String, HttpMethod, HttpEntity<?>, Class<T>)
时,它似乎有选择地转义字符。也就是说,如果我传入flavor=PB%26J
,它会转义百分号,得到flavor=PB%2526J
。但是,如果我传入flavor=PB&J
,它会留下与号,从而产生flavor=PB&J
,它被视为两个参数。
我已经追踪到RestTemplate
调用UriTemplateHandler.expand(String, Object...)
的地方,但我不确定从这里可以做什么,因为我开始的输入值都没有导致所需的PB%26J
。
2条答案
按热度按时间bvpmtnay1#
您可以在
UriComponentsBuilder
的帮助下生成url字符串。encode()
方法应该可以帮助你正确编码url。或者更好的方法是,只传递
URI
对象dgsult0t2#
在您情况下,这应该有效: