使用FluorineFx.AMF3.ByteArray解码AMF3数据

作者: Nishizhen 分类: C#相关, Flex 发布时间: 2010-02-09 15:26 ė 611条评论

解释AMF数据可以采用FluorineFx.AMF3这个包,方法如下。

FluorineFx.AMF3.ByteArray br = new FluorineFx.AMF3.ByteArray(new MemoryStream(bb));
 br.Position = 0;
 br.ReadShort();//amf版本
 br.ReadShort();//header数量
 br.ReadShort();//body数量
 br.ReadUTFBytes((uint)(br.ReadShort()));//target长度和字符串
 br.ReadUTFBytes((uint)(br.ReadShort()));//Response长度和字符串
 br.ReadInt();//body长度
 br.ReadByte();//body类型
 object o = br.ReadObject();

剩下自己解决吧 很好用~

本文出自 逆时针's Place,转载时请注明出处及相应链接。

本文永久链接: http://www.nishizhen.cn/%e4%bd%bf%e7%94%a8fluorinefx-amf3-bytearray%e8%a7%a3%e7%a0%81amf3%e6%95%b0%e6%8d%ae/

11条评论

  1. wangbin 2011年2月14日 17:23

    你好,请问需要POST的值怎么传呢,还有new MemoryStream其中的参数bb是什么意思

  2. wangbin 2011年2月14日 17:44

    请问new MemoryStream(bb) 这个里面的bb 就是发送到服务器的二进制数据吗

  3. Nishizhen 2011年2月16日 21:35

    对,这个bb就是AMF数据

  4. Nishizhen 2011年2月16日 21:37

    Post值怎么传?

    没明白什么意思,直接Post,就可以啊~

  5. wangbin 2011年2月22日 14:09

    很感谢你能回答我的问题
    还有一个不明白 我通过HTTPAnalyzer这个工具获取的事2进制数据string tt=”
    000300000001001a4974656d536572766963652e67656e65726174654f757470757400022f31000000220a000000030200073130323835333702000731303238353337003ff0000000000000″
    然后 我这样处理的byte[] bb = strToToHexByte(tt)
    strToToHexByte函数如下
    private static byte[] strToToHexByte(string hexString)
    {
    hexString = hexString.Replace(” “, “”);
    if ((hexString.Length % 2) != 0)
    hexString += ” “;
    byte[] returnBytes = new byte[hexString.Length / 2];
    for (int i = 0; i < returnBytes.Length; i++)
    returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
    return returnBytes;
    }
    然后用你些的函数 提示报错 不知道什么原因

  6. wangbin 2011年2月22日 14:10

    数据我在粘贴一次:
    000300000001001a4974656d536572766963652e67656e65
    726174654f757470757400022f31000000220a0000000302
    00073130323835333702000731303238353337003ff00000
    00000000

  7. Nishizhen 2011年2月24日 09:08

    我不明白为什么你得到的数据是String类型,自己转换的?

    正常通信得到的结果就是byte[]类型的啊,为什么要转换呢?

    你的方法我没看啊~

  8. wangbin 2011年4月13日 00:08

    不好意思 由于一直没忙 忘了上来看了 我那个数据是用HTTPAnalyzer 抓到的hex的数据,因为看抓到的content是乱码

  9. wangbin 2011年4月13日 00:10

    非常感谢 你能有时间回答我的问题,很感激,但是这个问题一直困扰我,虽然没做这方面的,但是很想弄明白

    其实就是你是否能给的例子 比如你抓到的包是什么样,然后你的这个例子中的bb是怎么样 如果能这样说下就很明白了

  10. mayor 2011年8月16日 18:32

    尊敬的前辈您好。
    amf数据越看越让人糊涂,有没有办法将amf数据转换成xml。

  11. Nishizhen 2011年8月24日 17:00

    amf仔细研究研究就好了,还是挺好的,我给别人做过amf转xml的dll,不过不是完全能够转换的,都是一年前写的了,现在你要是商业项目的话联系我,我可以做。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

验证码 * Time limit is exhausted. Please reload CAPTCHA.

Ɣ回顶部