Python解码AMF响应

时间:2012-12-08 04:21:31

标签: python amf

我在python中向一个返回AMF的Web服务发出请求。我不知道它是AMF0还是AMF3。

r = requests.post(url, data=data)
>>> r.text
u'\x00\x03...'

Full data here

如何将r.text转换为python对象或类似对象?我找到了amfast,但它的Decoder类返回3.131513074181806e-294,假设AMF0和None用于AMF3。 (两者都不正确)

from amfast.decoder import Decoder
decoder = Decoder(amf3=False)
obj = decoder.decode(StringIO.StringIO(r.text))

2 个答案:

答案 0 :(得分:4)

你试过PyAMF吗?

from pyamf import remoting
remoting.decode(data)

答案 1 :(得分:4)

我发现你的代码存在两个问题,第一个是使用r.text来返回二进制数据。请改用r.content。第二个问题是使用decoder.decode方法,它解码一个对象而不是数据包。请改用decoder.decode_packet

from amfast.decoder import Decoder
decoder = Decoder(amf3=True)
obj = decoder.decode_packet(r.content)

使用Pyamf也可以使用r.content