今天自己写的一个小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();