Base64编码后加号变成了空格

       今天遇到一个问题,远程升级服务中下发指令全部失败。这个问题我的同事从上周五到本周一一直在处理,但是依然没有解决,周一上班我就去接手了这个问题,因此记录解决问题过程。

 

      首先,解释下项目背景,spring cloud架构,产生bug原因是由于更新了项目架构(由于没有认真测试,因为缺少硬件支撑),背景如下。

 

       同事在更新这个功能后创建一个虚拟设备简单下发指令,确认指令能到达物联网平台便匆匆发布了,等到设备商使用升级功能时,便发现升级命令使用无法下发至设备,但物联网平台却有指令下发记录。
 

      我通过日志对比分析发现如下:
发送前:

 

 

 

 
发送后:

      看到了曙光,又对比了多条发现规律,但凡base64编码产生加号的文本到平台那边都变成了空格。然后简单分析了过程,参数在【upgrade-server】——【api-server】分别打印了一下,在【api-server】发现加号变成了空格,找到问题点,就在网上搜了一下,就找到了解决点:http传输参数的时,url编码后会将url传输的参数【空格】转变为【+】号

处理思路也有几种,此处只记录解决过程。推荐方法:对前台请求参数编码

 

BASE64  通过url传递到后台 加号变空格的处理方法

解决方法: 前台处理:str.replace("+", "%2B"); 

前台处理 :java方法:URLEncoder.encode(str,"UTF-8");js 方法encodeURIComponent(str);

后台处理:URLDecoder.decode(str,"UTF-8");

 

 

Tips:成长从点滴开始

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值