美文网首页
Get请求在Springboot项目中遇到的字符串编码扎心问题

Get请求在Springboot项目中遇到的字符串编码扎心问题

作者: 嘀灬学生卡 | 来源:发表于2019-03-11 10:01 被阅读2次

    问题情境

    在Springboot 项目中编写一个接口,通过Eclipse运行项目,测试接口可以返回所需的json数据。将Springboot项目打成jar包,在window 10机器上运行,再进行测试,发现数据返回为空值。继而将该项目打成war包部署到Tomcat服务器,测试接口,数据依然为空。

    寻找原因

    通过代码调试,发现程序中有一部分为Java后台访问第三方外部接口,获取数据时,http请求状态码为500。没有报任何错误,将第三方外部接口放入浏览器中请求,可以获取数据。未知原因。

    原因猜测

    Java后台访问第三方外部接口时用的get请求,请求地址通过字符串拼接,是否与字符串编码有关。网上查询get请求字符串编码问题,发现在进行http通讯时,服务器接收方收到的中文编码是类似%E4%B8%AD%E5%9B%BD种格式的,所以在字符串拼接时,对传入的参数进行字符串编码。

    param = URLEncoder.encode(param, "utf-8");//param为get请求进行url字符串拼接时使用的参数
    String url = "http://**********/**?param="+param;
    

    通过以上处理问题得到解决。

    关键是通过Eclipse运行时没有任何问题,打成jar包或war包进行运行时就出现问题,还没报错信息,搞了一下午终于解决了,记录一下。

    相关文章

      网友评论

          本文标题:Get请求在Springboot项目中遇到的字符串编码扎心问题

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