AMF学习2远程调用的封装
|
前一篇中已经学习了AMF数据类型,那么接下来就要将一个完整的AMF文件的封装格式了。 AMF文件总体来说分为4部分:前言()、AMF头、AMF主体和主体的响应。 前言的前2字节用于说明AMF的版本,目前AMF有2个版本AMF0和AMF3.如使用AMF0则是:00 00 第3和第4字节用16位整数表示AMF头的数量。 每一个AMF头是由以下四部分组成: UTF string 表示Header的名字 Boolean 表示该Header是否是必须的 Int32表示Header的长度,但是好像很多情况下该值为FF FF FF FF,似乎这个字段没有意义。 Variable变量是某种AMF数据类型。 在Header表示完后,接下来是一个16位的整数用来表示AMF主体的数量,在这个数量之后才是AMF主体。 AMF主体主要由以下四部分组成: UTF String - Response表示请求的类和方法或响应的结果。 UTF String - Target是一个标识,其作用就是为了实现请求和响应的对应,通过Target找到该响应对应的请求。一般使用自增整数。 Int32- 表示主体的长度,该字段一般没有什么用 Variable变量表示主体的数据。 主体响应是客户端向服务器发送一个AMF请求以后服务器做出的和请求的主体格式相同的AMF响应,但是主体响应中的内容有所不同: Response: 被设置为字符串‘null’. Target: 是请求的Target值再加上“/onStatus”,“onResult”,或者 “/onDebugEvents”组成. “/onStatus” 是为运行时错误而准备的我们一般不关心这个. “/onResult” 表示该请求被正确调用. “/onDebugEvents” 是在调试时使用的,这里也不用关心. 如果请求的Target是‘/1’,那么被成功调用以后的主体响应应该是: ‘/1/onResult’ 。 Data:就是响应后返回的AMF对象。 说了这么多估计还是感觉比较抽象,下面给出个实例: 以上是客户端向服务器发送的一个AMF请求。我们可以按照前面说的封装方式将该amf解析如下: 00 00(AMF0版本)00 00(Header个数为0)00 01(AMF主体有1个) 00 1B(请求的方法的字符串长度为27个字节) 7A ……77(这27个直接就是调用的类和方法:“zh.fleetService.getFleetRow”) 00 03(请求的Target字符串长3字节) 2F 37 39(Target的内容:“/79”) 00 00 00 13(主体的长度为19) 0A(传入的变量是一个Array)00 00 00 03(该Array的长度为3)02 00 01 35(Array的第一个值是字符串“5”)02 00 03 38 34 35(Array的第二个值是字符串“845”)02 00 01 35(Array的第三个值是字符串“5”) 现在整个AMF对象都解析出来了,我们可以认为是客户端调用了服务器的方法:zh.fleetService.getFleetRow("5","845","5") 服务器返回的AMF文件的内容的解析方式相同,这里我就不再重复了。 现在我们已经对AMF文件有了一个清晰的认识了。那么接下来就是要抓包,看某些在Flex上的操作对应的发送了什么AMF文件,服务器返回了什么AMF文件。将这些AMF文件解析出来然后就可以看到调用了API了。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 有什么好的参考或工具可用于将ASP转换为ASP.NET?
- asp.net-mvc – 使用html.actionlink将模型从视图传递到控制
- asp.net – Azure服务架构与Docker一样吗?
- asp.net – App_Data文件夹中的图像未显示在浏览器中
- asp-classic – 使用FileSystemObject的文件权限 – CScrip
- asp.net – 保护Web服务
- asp.net – 如何添加一个访问控制允许原始头在IIS7有限制
- asp.net-mvc – Ninject – 具有参数/ Entity Framework连接
- asp.net-mvc-3 – 在代码MVC Razor中呈现局部视图
- 如何在ASP.NET MVC 4 Beta中禁用Javascript/CSS缩小
- 如何使用WMD在ASP.NET中存储降价?
- asp.net-mvc – 部分视图继承自主布局
- asp.net – 为什么IIS7需要很长时间
- asp.net-mvc – 是否可以模拟/伪造扩展方法?
- asp.net-mvc-2 – 在发布网站后无法在asp.net mv
- asp.net-mvc – ASP.NET MVC读取原始JSON信息数据
- entity-framework – Ninject WebAPI由于DbConte
- asp.net – 403从WindowsAzure.Storage生产错误
- asp.net – 登录后对Membership.GetAllUsers()的
- asp.net-mvc – ASP.NET MVC忽略所有url结尾的“
