我正在使用MessagePack開發客戶端SDK。我需要在java,ObjC和python中開發客戶端,而我的服務器是在java中。我對java和ObjC msgpack庫沒有任何問題,但在python中,當我打包字符串值超過31個字符的字典時,打包數據不會在其他語言中解壓縮。試圖在Python中解壓縮相同的工作,只要字符串長度小於32,互操作性也非常好。失敗的下面是一個Python的例子..MsgPack打包的字符串值長於32個字符python
myPacket = {u"api_key":u"ad09739ac168ff2a199fb24eb4e24db8"}
msgPackedPacket = umsgpack.packb(myPacket)
此生成的二進制數據是
<81a76170 695f6b65 79d92061 64303937 33396163 31363866 66326131 39396662 32346562 34653234 646238>
而如果我隱蔽在ObjC相同的密鑰值的字典,我得到
<81a76170 695f6b65 79da0020 61643039 37333961 63313638 66663261 31393966 62323465 62346532 34646238>
該ObjC結果解壓縮罰款和python不會..你可以注意到從ObjC的數據額外的2個字節。
正常工作的例子如下
myPacket = {u"api_key":u"ad09739ac168ff2a199fb24eb4e24d"}
字符數= 30這裏的..和我得到以下字節在python
<81a76170 695f6b65 79be6164 30393733 39616331 36386666 32613139 39666232 34656234 65323464>
和ObjC時,得到下面的字節。
<81a76170 695f6b65 79be6164 30393733 39616331 36386666 32613139 39666232 34656234 65323464>
對不起,如果我錯過了明顯的東西..尋找任何解決方法或建議作爲我打了一天多..
在此先感謝。
它應該是myPacket。抱歉! – Ravi
你打開了哪個平臺? –
@Tim我在ObjC中解包.. ObjC中的msgpack庫只返回一個零,不會打印任何錯誤。我也嘗試在java中解壓無效字節:-39 – Ravi