restTemplate.getForObject方法第三方接口请求URL转义异常java.lang.IllegalArgumentException:Invalid character

在使用RestTemplate的getForObject方法请求第三方接口时,遇到URL参数包含‘+=’等特殊字符导致的转义异常。尝试使用UriComponentsBuilder未完全解决问题,最终通过URLEncoder和URLDecoder进行编码解码成功解决。
摘要由CSDN通过智能技术生成

今天自己写的一个小demo,使用RSA非对称算法加解密数据进行第三方接口测试。然后过程中出现了各种各样的bug,特别是下面这个错误,花了楼主大半天的时间去解决。。。
主要是使用 restTemplate.getForObject 方法去请求第三方接口请求参数的时候,带有+=这种类似的字符他会进行转义,然后解密失败。

下面是出错之前的代码:

ResponseResult object = restTemplate.getForObject("http://localhost:8080/test?result={1}", ResponseResult.class,encrypt);

在这里插入图片描述
在这里插入图片描述
楼主先是尝试了 UriComponentsBuilder 这个类里的方法把URL转换成URI,然后进行编码,结果发现这种方法转义的字符不全,+号没转,=号反而转了(# ̄~ ̄#)。

URI uri = UriComponentsBuilder.fromHttpUrl("http://localhost:8080/test").queryParam("result", encrypt).build(true).encode().toUri();
  
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值