我想爲AMF寫一個python3編碼器/解碼器。AMF序列化爲python3
我這樣做的原因是因爲我沒有找到適用於python3的庫(我正在尋找一個非強制性的庫 - 一個將提供給我的方法,讓我來處理網關我自己)
我測試python的Avaialble庫是amfast,pyamf和amfy。雖然前兩個是爲python2(pyamf的幾個分支建議他們支持python3,但我沒有得到它的工作),amfy是專爲python3,但缺乏一些我需要的功能(特別是對象序列化)。通過閱讀AMF0和AMF3規範,我能夠添加一個封裝編碼器/解碼器,但是我偶然發現了對象序列化,並且可用的文檔不夠(希望看到一些示例)。現有的圖書館也沒有任何幫助。
使用RemoteObject(Flex中),我設法發送者的要求,我的解析器:
b'\x00\x03\x00\x00\x00\x01\x00\x04null\x00\x02/1\x00\x00\x00\xe0\n\x00\x00\x00\x01\x11
\n\x81\x13Mflex.messaging.messages.CommandMessage\x13operation\x1bcorrelationId\x13
timestamp\x11clientId\x15timeToLive\tbody\x0fheaders\x17destination\x13messageId\x04\x05
\x06\x01\x04\x00\x01\x04\x00\n\x0b\x01\x01\n\x05\tDSId\x06\x07nil%DSMessagingVersion\x04
\x01\x01\x06\x01\x06I03ACB769-9733-6A6C-0923-79F667AE8249'
(請注意,換行符被介紹給發出請求更具可讀性)
標題是解析好的,但是當我到達第一個對象(靠近第一行末尾的\ n)時,它被標記爲一個引用(LSB = 0),而沒有其他可引用的對象。
我看錯了嗎?這是一個畸形的字節請求? 解碼這些字節的任何幫助都會受到歡迎。
謝謝。無論我看到多少次,它都沒有沉入...... – Ofir