POST请求字符’+’被自动替换’ ‘空格字符问题
问题描述
- 前台安卓开发,后台C++开发(IDE:C++Builder)
- 开发环境:Windows
- 前台使用JSON,通过POST请求向后台发送图片数据:
此图片数据通过Base64编码后打包成JSON数据格式,POST请求发给后台 - 症状:
后台收到前台Base64编码的图片数据大小正常,和前台发送的一致;
Base64解码后写图片文件数据到本地,得到的图片一片黑;如下图:
刚开始博主确实以为自己后台这边解码数据,写本地图片文件有问题;博主用的是Base64第三方库;由于没有单独拿出来测试看,所有确实有点心慌。
后来经单独测试,确实没问题;然后将测试的代码集成到项目中;结果还是写图片文件出现一片黑。因此怀疑是前台那边传过来的数据有问题;让前台自己测下自己编码和解码的数据是否正常。
问题原因:
1.附上URL链接,有可能是前台Base64编码的时候
2.urlencode 空格变 +号,urldecode +号变空格,HTTP的POST协议传递数据时自动url编码,接收后自动解码+号解码成空格了。
解决方法:
前台切实有Base64编码传参问题;改了之后图片还是一片黑;最好博主后台直接将前台传过来的Base64编码数据写到TXT文本中;放到图片在线转码Base64中查看,发现是无效的图片。说明传过来编码数据本身是有问题的。最后通过TXT数据和前台数据对比分析,才发现是’+’被转换成了’空格’。通过百度HTTP的POST;发现url的编码和解码会出现字符’+’和空格字符的转化问题。
最后博主将传过来的数据中的所有空格字符都替换成’+’号字符;问题解决;写本地图片文件显示正常。