我正在尝试创建一个包含“#”的URI。我知道这需要被替换为“%23”,所以我这样做了。但是,当使用WebClient连接到端点时,它会自动将“%”替换为“%25”,因此我最终使用“%2523”。
我试着只留下'#'字符,以为它会用编码格式替换所有非法字符(我可能在这里使用了错误的术语),但它没有替换它。下面是我的一些想法,没有什么太复杂的。
UPDATE:tag是一个短字符串,包含一个“#”字符,每隔一个字符有效。在下面的例子中,tag是#8QQRVVL0
。它不是URI片段,只是标识符系统的设计方式。
if(tag.contains("#")){
tag = tag.replace("#", "%23");
}
UserStatistics user = new UserStatistics();
String playersEndpoint = "players/";
JSONObject json = webClient.get()
.uri(playersEndpoint + tag)
.retrieve()
.bodyToMono(JSONObject.class)
.block();
URI的其余部分是在示例化WebClient对象时创建的,在Class中是优先级。
1条答案
按热度按时间bttbmeg01#
你可以试试这样的东西:
发生这种情况的原因是因为Java spring使用了所谓的百分比编码-这就是为什么%被转换为%25的原因,这里有更多信息:https://en.wikipedia.org/wiki/Percent-encoding
如果你能给予更多关于你在哪里和如何定义标签的细节,我可能会给出其他具体的建议。
更新:也许你可以试试这样的东西?
跟进更新:
尝试使用%2F更新playersEndpoint的/内部?