第一个android程序,qq农场助手

这几天准备给老婆写个qq农场助手,因为她天天都偷菜占用电脑长达半小时,造成这半小时我是如此的无聊难忍,于是说给她写个手机辅助工具,可以用手机偷菜,而且很方便,立马开始!
先用firefox+firebug研究一下农场的接口,主要是种植、翻地、收获、除虫、除草,以及获取好友列表接口。
1.先登录:http://ptlogin2.qq.com/login。参数:
=on
aid:15000101
dumy:
fp loginerroralert
from_ui 1
h 1
p 加密后的密码
ptredirect 1
u qq号码
u1 http://imgcache.qq.com/qzone/v5/loginsucc.html?para=izone
verifycode 验证码
通过http://ptlogin2.qq.com/check?uin=qq号码&appid=15000101获取某个qq号是否需要输入验证码,这个跟webqq2登录一样,可参见我以前的博客文章。
密码加密方法p=md5(md5_3(pwd)+verifyCode)。md5_3也就是3次md5加密。java代码:

public static String md5_3(String s) throws Exception {
java.security.MessageDigest md = java.security.MessageDigest
.getInstance("MD5");
md.update(s.getBytes("UTF-8"));
byte tmp[] = md.digest(); // MD5 的计算结果是一个 128 位的长整数,
md.update(tmp);
tmp = md.digest();
md.update(tmp);
tmp = md.digest();

char hexDigits[] = { // 用来将字节转换成 16 进制表示的字符
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };

char str[] = new char[16 * 2];
int k = 0;
for (int i = 0; i < 16; i++) {
byte byte0 = tmp[i]; // 取第 i 个字节
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf]; // 取字节中低 4 位的数字转换
}
s = new String(str);
return s;
}

1.获取好友或者自己的农场信息。
http://nc.qzone.qq.com/cgi-bin/cgi_farm_index?mod=user&act=run
在返回的json里包括农场信息,重点解释下农场信息里各字段含义:其中b,f,g,l,m是主要的。
"a":8, //ID(0空地)
"b":1,//阶段,0是空的,6是成熟了,7是荒地,需要翻地
"c":0,
"d":0,
"e":1,
"f":0, //草数量
"g":0, //虫数量
"h":1, //
"i":100,
"j":0, //是否已摘
"k":0, //产量
"l":0, //最低剩余
"m":0, //剩余数量
"n":[], //摘取的好友ID:摘取数量
"o":0,
"p":[],
"q":1248136642, //种植时间
"r":1248157876
2.其他接口:
种植http://nc.qzone.qq.com/cgi-bin/cgi_farm_plant?mod=farmlandstatus&act=planting
收获果实:http://nc.qzone.qq.com/cgi-bin/cgi_farm_plant?mod=farmlandstatus&act=harvest
除草:http://nc.qzone.qq.com/cgi-bin/cgi_farm_opt?mod=farmlandstatus&act=clearWeed
杀虫:http://nc.qzone.qq.com/cgi-bin/cgi_farm_opt?mod=farmlandstatus&act=spraying
浇水:http://nc.qzone.qq.com/cgi-bin/cgi_farm_opt?mod=farmlandstatus&act=water
翻地:http://nc.qzone.qq.com/cgi-bin/cgi_farm_plant?mod=farmlandstatus&act=scarify
好友列表:http://nc.qzone.qq.com/cgi-bin/cgi_farm_getFriendList?mod=friend
过滤好友:http://nc.qzone.qq.com/cgi-bin/cgi_farm_getstatus_filter
一键摘取:http://nc.qzone.qq.com/cgi-bin/cgi_farm_steal?mod=farmlandstatus&act=scrounge
传入的参数place,各地id用逗号隔开
3.比较重要的参数是farmTime和farmKey
String key = "%^#&vjrivnjruy#*(&^dfjruv@@fgjkfuhyuifg";
String farmKey = md5(""+time+key.substring((int) (time%10))).toLowerCase();
在对自己的农场操作中可不传此2个参数,对好友操作中则必须传此参数。

接口分析好了,开始做ui,简单的ui,一键式操作,顺便学习了android下的程序开发。最后,这是程序截图:
[img]http://dl.iteye.com/upload/attachment/370550/bdb427c6-7e76-3556-a969-707e4a26fcbb.png[/img]

附件是写好的程序.

你可能感兴趣的:(实践)