首页 > 代码库 > 003 精弘iOS/Android/WP客户端

003 精弘iOS/Android/WP客户端

我是一楼:

想做iOS客户端这个念头,有了几个月了,这个礼拜一辞了实习工作,跑回来做iOS客户端的开发,已经是第四天了。为嘛要做这个呢,因为现在的客户端是在是太挫我觉得有点看不下去...而且点击图片墙就闪退有木有...传说还有广告(我没发现..)。
刚开始,缠着墨鱼问有没有API,墨鱼说没有...

好吧,然后我尝试着看HTML源代码...准备在客户端解析HTML中的内容,然后获取地址和各种帖子信息(标题,发帖人等等)来进入帖子,然后通过POST模拟电脑端的操作来实现发帖等功能,但是。HTML的内容是这样的:

<td class="icn" style="padding-left:10px;">
<a href="http://bbs.zjut.edu.cn/forum.php?mod=viewthread&tid=1625794&extra=page%3D1" title="新窗口打开" target="_blank">
<img src="http://www.mamicode.com/template/yeei_dream1/css/yeei//folder_common.gif" />
</a>
</td>
<th class="common" style="padding-left:8px;">
<em>[<a href="http://bbs.zjut.edu.cn/forum.php?mod=forumdisplay&fid=465&filter=typeid&typeid=71">求助</a>]</em> <a href="http://bbs.zjut.edu.cn/forum.php?mod=viewthread&tid=1625794&extra=page%3D1" onclick="atarget(this)" class="xst" >电影双语如何切换音频啊?菜鸟求助啊</a>
</th>
<td class="by">
<cite>
<a href="http://bbs.zjut.edu.cn/home.php?mod=space&uid=183630" c="1">月辰弋羽</a></cite>
<em><span>2014-9-7</span></em>
</td>
<td class="num"><a href="http://bbs.zjut.edu.cn/forum.php?mod=viewthread&tid=1625794&extra=page%3D1" class="xi2">4</a><em>48</em></td>
<td class="by" style="padding-right:10px">
<cite><a href="http://bbs.zjut.edu.cn/home.php?mod=space&username=%E6%B3%89%E5%88%9D%E5%85%89" c="1">泉初光</a></cite>
<em><a href="http://bbs.zjut.edu.cn/forum.php?mod=redirect&tid=1625794&goto=lastpost#lastpost"><span title="2014-9-12 16:59">6 天前</span></a></em>
</td>
</tr>

WT* is this!用正则抓取也显得烦琐(楼主菜),而且在手机上打开一个网页就是几百K显然不是太好的(考虑这么多用移动的孩子还停留在EDGE...)。

然后我想到了iOS客户端。iOS客户端难道也是通过这种愚蠢的方式的吗!就没有正常人类用的JSON来传输数据、负责交互吗!于是楼主祭出神奇Charles,开启抓包,用手机登上客户端:登录...抓包...结果如下

 

     然后返回值如下

 

{
    "secret": "2a113ad6cfadce314a60a79d33cb7", 
    "token": "8a7e56597e8b55881c67b1cb28b1b", 
    "uid": 273684, 
    "avatar": "http://center.zjut.com/images/noavatar_middle.gif", 
    "fid": 1, 
    "rs": 1, 
    "counts": null
}

               这就是我们想要的东西啊(墨鱼说没有API....)!试想一下有了这个东西,假如我们在任何客户端需要登录,我们只要根据(需要写的API就是这样子的,当然还需要说明栏)

参数变量
appName精弘论坛
emailiosapp(用户名)
forumKeyCIuLQ1lkdPtOlhNuV4
forumType7
packageNamecom.mobcent.newforum.app82036
password我是密码
platType5
sdkType1
sdkVersion2.0.0


在客户端发起请求:

<font color="#0000ff">http://bbs.zjut.edu.cn/mobcent/login/login.php</font>?<font color="#0000ff">forumType</font>=7&<font color="#0000ff">forumKey</font>=CIuLQ1lkdPtOlhNuV4&<font color="#0000ff">sdkType</font>=1&<font color="#0000ff">packageName</font>=com.mobcent.newforum.app82036&<font color="#0000ff">platType</font>=5&<font color="#0000ff">appName</font>=%E7%B2%BE%E5%BC%98%E8%AE%BA%E5%9D%9B&<font color="#ff0000">email</font>=<font color="#ff0000">帐号</font>&<font color="#0000ff">sdkVersion</font>=2.0.0&<font color="#ff0000">password</font>=<font color="#ff0000">我是密码</font>

就能够获取到以上的JSON,而有了"secret": "", "token": "", 后续的任何发帖之类的操作,我们才可以进行(作为参数传递)。

如果能得到现有APP的这套API,那么我们就可以实现所有现有的功能了...有同学会问:已经有了干嘛再实现一遍...?...因为现在的APP(iOS)打开图片多的帖子闪退(没有经过图片压缩),帖子没有缓存(打开比较慢),而且界面没办法定制,更没法扩展...这个APP的来头的话,是安米网:http://www.appbyme.com/mobcentACA/index.html 
当然这不是一个开源的客户端(否则怎么加入广告赚钱),API显然不公开...

楼主不是很懂后端,不懂discuz (php写的?)加入一个插件,然后写一套自己的API工作量是怎么样子的(还有难度)...但是如果想要完全自主,这肯定是一种更好的方法。
当然楼主现在正在第二条路上,整理安米生成的客户端的API,如果可以整理这么一套API,无论iOS、Android还是WP,只有有人愿意做,我们都可以做出客户端来。

楼主现在正在做iOS客户端,进度可以在 https://github.com/DikeyKing/jinghong 上看到(刚刚实现完登录...)
如果,选择走第二条路,那现在很需要人去整理出这套API。


003 精弘iOS/Android/WP客户端