请帮助解决以下问题。
当我试着和 Postman 一起请求gitlab或者curl时,我得到了文件的答案
curl --header "PRIVATE-TOKEN: xxxxxxxx" "https://gitlabXXXX/api/v4/projects/13/repository/files/src%2Fcom%2Fgre%2Fjenkins%2FConstants.groovy?ref=foo"
但是,当我尝试在代码中执行相同的操作时,我得到一个错误消息:“404文件未找到”
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set("PRIVATE-TOKEN", "xxxxxxx");
System.out.println(restTemplate.exchange("https://gitlabXXXX/api/v4/projects/13/repository/files/src%2Fcom%2Fgre%2Fjenkins%2FConstants.groovy?ref=foo", HttpMethod.GET, new HttpEntity<>(httpHeaders), String.class).getBody());
为什么不起作用?也许restempate中的某些内容更改了url或者我不知道。。。
1条答案
按热度按时间ifsvaxew1#
resttemplate再次对您的url进行编码,因此您的请求url为:
https://gitlabXXXX/api/v4/projects/13/repository/files/src%252Fcom%252Fgre%252Fjenkins%252FConstants.groovy?ref=foo
所以你的%
变成%25
这不是gitlabapi所期待的。解决方案
你可以用
UriComponentsBuilder.build(true)
方法来告诉您的uri已编码: