2

我在 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 和NoneAMF3。(两者都不正确)

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

2 回答 2

4

你试过 PyAMF 吗?

from pyamf import remoting
remoting.decode(data)
于 2012-12-08T05:19:44.363 回答
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.

于 2012-12-19T21:46:17.183 回答