开心网辅助程序开发手记(二):获取好友私家车位信息

  在上篇手记《开心网辅助程序开发手记》中,简单记录了如何登录开心网,获取“争车位”的相关数据:玩家(泊车者)信息、玩家车辆停车信息、玩家私家车位停车情况等。在这篇手记中,将简单描述如和获取玩家好友信息及玩家私家车位停车情况。话不多说,进入正文。

     一、获取玩家好友信息

      其实在上篇手记中,有提到v_frienddata变量,其实玩家好友信息就是以JSON格式保存在该变量里的,我们只需要写好对应的实体,再利用Json.NET做个转换就可以了。由于上篇没有详细介绍如何使用Json.NET对JSON进行转换,这里补充介绍一下。

      先来看一下变量中JSON的树状结构:


      其中,uid为1、2的是系统给玩家添加的默认邻居。下面是实体类(关于EntityBase实体请参见上篇手记附带的源码):

Code

 

      下面是Json.NET对JSON的转换代码:

Code

      由于v_frienddata中的JSON包含的是一个数组,固可以把object对象o转换成Newtonsoft.Json.JavaScriptArray。

 

     二、获取玩家好友私家车位停车情况

      在获取玩家好友私家车位停车情况时,让我们先打开《开心网》“争车位”页面,研究一下:在页面上应该怎样操作才能获取玩家好友私家车位停车情况。

      1. 点击下图红色线条框内的好友名字(李敏杰)


      2.  点击好友名字时,你会发现页面中部队flash数据已经转变为好友私家车位的数据。

      那么好友私家车位的数据是怎么来的呢,你可以使用HTTP抓包工具Http Analyzer来进行抓包分析一下,这里我用的是Firebug。下面介绍一下如何利用Firebug进行抓包。

      1. 为了排除历史数据对我们的分析造成影响,请你重新在Firefox中打开“争车位”页面;

      2. 点击好友名字(李敏杰)

      3. 在Firefox中按下F12调出Firebug

      4. 在console面板下,我们可以发现有一个POST


       5. 点开这个POST,我们可以清楚的看到这次请求想服务器发送到Post Data(puid: 11948259; verify: 12813044_1040_12813044_1228739520_e83ef7b74ff97a1c788d1454fc327724)和服务器的Response

      6. 单击Response,再单击Load Response,你能查看服务器的Response数据,呵,又是JSON,好友私家车位的停车情况就藏在里面了,只需要用Json.NET对其做一下转换就可以了。

 

 

      现在,让我们会过头来看一下Post Data,其中puid就是好友的编号,我们可以从好友实体中获得;另一个verify是从哪来的呢?让我们分析一下。

      1. 单击Firebug中的Inspect,再单击一下好友名字(李敏杰),在Firebug中就自动在HTML中帮我们定位好了,如下图:


      2. 很直接的看到:在我们单击好友名字时,系统调用了一个gotouser方法

      3. 借助Firebug,我们轻易的就在Parking-7.js中找到了gotouser方法

Code

      4. 在这段JS中,不难发现verify是从变量g_verify中来的,那么g_verify又是从哪来的呢?我猜是在app.php?aid=1040中

 

      5. 从上图可以看到g_verify变量的值和上文提到的Post Data中的Verify中的数据是一样的,那就说明我们找得没错了。

      6. 下面就是在程序中模拟这个Post请求了

Code

 

个人觉得:到此为止,制作《开心网-争车位助手》的分析和基本数据获取已经准备得差不多了,接下去就是实现真正的模拟争车位了,很是期待,但也一定得等有空时才能继续了。

点击下载实例源码 (由于目前源码中没有任何界面,若有兴趣的朋友想测试的话请修改SNSHelper_UnitTest/App.config中的帐号信息,然后再测试视图中测试)

posted @ 2008-12-08 21:43  Jailu  阅读(3018)  评论(0编辑  收藏  举报