我在python中向一个返回AMF的Web服务发出请求。我不知道它是AMF0还是AMF3。
r = requests.post(url, data=data)
>>> r.text
u'\x00\x03...'
如何将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))
答案 0 :(得分:4)
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
。