RestTemple请求GET接口403

问题描述

使用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);

至此,问题已解决

相关推荐
都叫我大帅哥30 分钟前
TOGAF应用架构阶段全解析:从理论到Java代码实战
java
Amagi.1 小时前
Java设计模式-建造者模式
java·设计模式·建造者模式
EmpressBoost1 小时前
谷粒商城170缓存序列化报错
java·spring·缓存
fouryears_234171 小时前
@PathVariable与@RequestParam的区别
java·spring·mvc·springboot
wxjlkh1 小时前
powershell 批量测试ip 端口 脚本
java·服务器·前端
萌新小白的逆袭2 小时前
《Maven 核心基础笔记(第一天)》
java·开发语言·spring
一念&2 小时前
Java泛型
java
掉鱼的猫2 小时前
Solon 整合 LiteFlow 规则引擎:概念与实战
java·workflow
她说..2 小时前
Stream API流学习总结
java