我想为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