【原創(chuàng)】使用simc類Base64方法解碼引發(fā)的奇葩問題

在使用蘋果天貓APP掃碼時(shí),服務(wù)端接收到參數(shù),對(duì)json字符串進(jìn)行解碼時(shí),總是遇到下面的報(bào)錯(cuò):

而使用蘋果淘寶APP則是正常。因此懷疑是天貓和淘寶APP對(duì)json格式的解析方法或者對(duì)Base64的解碼方法不相同。

經(jīng)過一番探究,發(fā)現(xiàn)在兩個(gè)不同解碼網(wǎng)站進(jìn)行測(cè)試時(shí),得到的結(jié)果竟然不一樣。

使用該字符串(eyJkZXZpY2VJZCI6MiwidXNlcklkIjoxNTQ3fQ)進(jìn)行測(cè)試:

  1. http://tool.chinaz.com/Tools/Base64.aspx ,提示解碼失敗

若對(duì)字符串末尾加上“==”,則可以正確解碼:

  1. http://base64.xpcha.com/ ,則成功

對(duì)字符串末尾加上“==”,也可以正確解碼:

由此,基本可以確定是解碼工具不一樣導(dǎo)致的。

檢查了服務(wù)端代碼,我目前使用的是sun.misc.BASE64Decoder的解碼方法,

查看了幾篇文章,在這篇文章中( https://blog.csdn.net/u013476542/article/details/53213783) 提到sun.misc.BASE64Decoder并不被推薦,有可能未來會(huì)被刪除,

因此猜測(cè)有可能是這個(gè)工具類引起的,那就不如換個(gè)其他工具類試下。
暫定使用了文章提到的“常用的Apache Commons Codec library里面的org.apache.commons.codec.binary.Base64”。

寫了一個(gè)測(cè)試方法對(duì)該字符串進(jìn)行測(cè)試,

傳入不加和加上“==”的兩種字符串,發(fā)現(xiàn)果然都可以正確解碼:

趕緊改了改代碼,部署到服務(wù)端測(cè)試,果然正常啦!

至此,開心得感極而泣啦!昨天還花了兩個(gè)小時(shí)研究,以為是前端編碼入?yún)⒌膯栴},最終還是排除了前端問題,定位在服務(wù)端方法異常。

話說回來,為什么蘋果淘寶掃碼可以正常,而天貓APP則不可以?
試驗(yàn)了下,對(duì)掃碼結(jié)果進(jìn)行了日志記錄,終于發(fā)現(xiàn)了問題:
淘寶服務(wù)器和天貓服務(wù)器對(duì)參數(shù)的處理方式有差異,淘寶會(huì)對(duì)base64編碼過的字符串保留==(應(yīng)該是使用類似Base64.DEFAULT的方式),而天貓則默認(rèn)會(huì)去掉末尾 的==(應(yīng)該是使用類似Base64.NO_PADDING的方式),而恰巧使用sun.misc.BASE64Decoder則不可以解碼沒有==的字符串
——就是這么巧合,所以奇葩問題才會(huì)來了。

使用淘寶APP掃碼:

使用天貓APP掃碼:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明AI閱讀 16,171評(píng)論 3 119
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,273評(píng)論 2 89
  • 晚上,她發(fā)了一條信息給他,在么 他說在,她說哦 她悲傷了一整天,她不知道要說什么,他是她悲傷時(shí)抓住的一根稻草,她想...
    永之_閱讀 131評(píng)論 0 0
  • 又一個(gè)大年夜,又離成熟和老去近了一步。 噼里啪啦,煙花綻放在空中的美麗猶如逝去的曾經(jīng)。在當(dāng)下,回味時(shí),帶著...
    墨寒涼閱讀 267評(píng)論 0 0
  • 我不會(huì)告訴你 為了多看你一眼 我曾在固定的時(shí)間出現(xiàn)在某個(gè)路口 我不會(huì)告訴你 多少個(gè)清晨和黃昏 在你大步流星奔向?qū)W校...
    Always十月閱讀 208評(píng)論 0 1

友情鏈接更多精彩內(nèi)容