我正在用python向返回AMF的Web服务发出请求。我还不知道是AMF0还是AMF3。
r = requests.post(url, data=data)
>>> r.text
u'x00x03...'
(完整数据在这里)
如何获取r.text
并将其转换为 python 对象或类似对象?我发现 amfast,但它Decoder
类返回一个3.131513074181806e-294
假设 AMF0 和 AMF3 None
。(均不正确)
from amfast.decoder import Decoder
decoder = Decoder(amf3=False)
obj = decoder.decode(StringIO.StringIO(r.text))
我看到你的代码有两个问题,第一个是使用 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
.
你试过PyAMF。
from pyamf import remoting
remoting.decode(data)