解释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();
剩下自己解决吧 很好用~
《 “使用FluorineFx.AMF3.ByteArray解码AMF3数据” 》 有 11 条评论
你好,请问需要POST的值怎么传呢,还有new MemoryStream其中的参数bb是什么意思
请问new MemoryStream(bb) 这个里面的bb 就是发送到服务器的二进制数据吗
对,这个bb就是AMF数据
Post值怎么传?
没明白什么意思,直接Post,就可以啊~
很感谢你能回答我的问题
还有一个不明白 我通过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;
}
然后用你些的函数 提示报错 不知道什么原因
数据我在粘贴一次:
000300000001001a4974656d536572766963652e67656e65
726174654f757470757400022f31000000220a0000000302
00073130323835333702000731303238353337003ff00000
00000000
我不明白为什么你得到的数据是String类型,自己转换的?
正常通信得到的结果就是byte[]类型的啊,为什么要转换呢?
你的方法我没看啊~
不好意思 由于一直没忙 忘了上来看了 我那个数据是用HTTPAnalyzer 抓到的hex的数据,因为看抓到的content是乱码
非常感谢 你能有时间回答我的问题,很感激,但是这个问题一直困扰我,虽然没做这方面的,但是很想弄明白
其实就是你是否能给的例子 比如你抓到的包是什么样,然后你的这个例子中的bb是怎么样 如果能这样说下就很明白了
尊敬的前辈您好。
amf数据越看越让人糊涂,有没有办法将amf数据转换成xml。
amf仔细研究研究就好了,还是挺好的,我给别人做过amf转xml的dll,不过不是完全能够转换的,都是一年前写的了,现在你要是商业项目的话联系我,我可以做。