美文网首页程序员
UrlEncoded.encodeString与URLEncod

UrlEncoded.encodeString与URLEncod

作者: 乌龟山的山大王 | 来源:发表于2020-05-26 00:13 被阅读0次

问题原因

今天在优化代码的时候,将一行代码从UrlEncoded.encodeString改成了URLEncoder.encode,本以为想,设置一个编码方式而已。只要都用utf-8应该结果一样。
但是没想到,就这一行修改,导致了原来调用接口没问题的地方接口调用失败了,接口方接日志看到的参数就和提交的不一致,排查半天无果,换了回来,发现又没问题了。
那么,最不可能的真相就只有一个,UrlEncoded.encodeString和URLEncoder.encode的结果不一致。

解题思路

那么,做个试验吧:


测试1号 (1).png
测试1号 (2).png

从该结果,发现编码结果是一样的。
那么,如果存在特殊字符呢?接下来试试一个JSON:


测试2号(1).png
测试2号(2).png
我们发现对于“.”编码的时候UrlEncoded.encodeString会编码成“%2E”,而URLEncoder.encode不会编码,所以这就导致了当我改为URLEncoder.encode编码时,接口接收端使用的是UrlEncoded对应的解码方式,解析的参数不全,从而内部错误。

解决办法

因为已经很晚了,所以最终我换回了UrlEncoded.encodeString的编码方式解决这个问题,并将该问题记录下来。
希望各位以后遇到类似场景的时候,可以意识到会存在这种情况。

相关文章

网友评论

    本文标题:UrlEncoded.encodeString与URLEncod

    本文链接:https://www.haomeiwen.com/subject/mqjpahtx.html