尽管链接正确,RestTemplate返回404代码

时间:2018-10-24 21:30:39

标签: java spring spring-boot

这是我的代码:

UriComponentsBuilder builder = UriComponentsBuilder.fromUriString("https://stats.quake.com/api/v2/Player/Stats");

builder.queryParam("name", "D&M na1x");

log.info("encoded link: {}", builder.toUriString());

log.info("response: {}", restTemplate.getForObject(
        builder.toUriString(), String.class));

并提供以下输出:

encoded link: https://stats.quake.com/api/v2/Player/Stats?name=D%26M%20na1x
response: {"code":404,"message":"No results found."}

链接的编码正确,可以在浏览器和其他客户端(chrome扩展程序)中使用。我认为查询参数(名称)有问题,因为它适用于我测试过的所有其他缺口(例如lIlIlIlIlIlmyztro RAISY)。我的猜测是&字符有问题,但URL看起来正确。有什么想法怎么了?当然,我尝试为对象分配响应,但是它返回null。

1 个答案:

答案 0 :(得分:0)

查看一些文档和其他用户对SO的抱怨,看来UriComponentsBuilder只是对整个URI进行编码,而不是对查询参数值进行专门编码。

尝试自己进行编码:builder.queryParam("name", URLEncoder.encode("D&M na1x","UTF-8"));