问题描述
使用oss接口获取资源的时候,通过浏览器可以直接下载,在代码中使用RestTemplate的get方式访问的时候,出现403错误
问题排查
因为返回状态码是403,就想着是不是授权问题,因为有的接口是有防抓取规则的,但是一系列操作之后无果,开启debug进行问题排查:
powershell
debug: true
比对url之后发现实际调用的url已经够被改变
% -->%25
restTemplate默认的生成url的方式会出现该问题,所以考虑自己将url转成uri对象
问题代码
java
ResponseEntity<byte[]> forEntity = restTemplate.getForEntity(ossUrl, byte[].class);
修改之后代码
java
URI uri= new URI(ossUrl);
ResponseEntity<byte[]> forEntity = restTemplate.getForEntity(uri, byte[].class);
至此,问题已解决