我真的很难处理"#"的一些字符编码问题。我正在尝试从url"url/path/#"中"获取",在参数前面加上"#"。终结点需要"#"或"%23"的字符编码值。但是,RestTemplate要么是a(不编码"#",这会导致API出现其他异常(API确实想要"%23"而不是"#"(,要么是b(双重编码"%"。我如何使用RestTemplate来实际发送"%23".
代码非常简单:
restTemplate.exchange(url, HttpMethod.GET, httpEntityWithSomeAuthHeader,
new ParameterizedTypeReference<SomeObject>() {});
url如上所述。。。
谢谢!
希望不要迟到;(
试试这个:
URI uri = new URI(url);
restTemplate.exchange(uri, HttpMethod.GET, httpEntityWithSomeAuthHeader,
new ParameterizedTypeReference<SomeObject>() {});
重要的是,在url参数中使用%23。似乎如果你使用#(带字符串或uri(,它会在。。。但对于%23和"新URI",它将其放入查询中(URI内部为%23(,服务器解码为#。
希望有帮助;(
PD:一位同事记得我https://xkcd.com/979/当我们看到你回答的问题时;(现在我们有了答案