繁体   English   中英

Spring RestTemplate的“#”字符编码

[英]Spring RestTemplate character encoding for “#”

对于“#”的某些字符编码问题,我真的很难过。 我正在尝试从URL“ URL / path /#”中获取“ GET”,而在参数前使用“#”。端点期望字符编码值为“#”或“%23”。 ,RestTemplate是a)不编码“#”,从而导致API出现其他异常(API确实需要“%23”而不是“#”,或者b)对“%”进行了双重编码。 RestTemplate从字面上发送“%23”。

代码很简单:

restTemplate.exchange(url, HttpMethod.GET, httpEntityWithSomeAuthHeader, 
    new ParameterizedTypeReference<SomeObject>() {}); 

网址如上所述。

谢谢!

希望不要迟到;)

试试这个:

URI uri = new URI(url);
restTemplate.exchange(uri, HttpMethod.GET, httpEntityWithSomeAuthHeader, 
new ParameterizedTypeReference<SomeObject>() {}); 

重要的是,在URL参数中使用%23。 看来,如果您使用#(带有字符串或uri),它将在之后丢弃所有内容……但是使用%23和“ new URI”,它将放入查询(在uri内部为%23),服务器将解码为#。

希望能有所帮助;)

PD:一位同事记得我这个https://xkcd.com/979/,当我们看到您回答的问题时;)现在我们已经回答了

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM