美文网首页程序员
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