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

第一个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下的程序开发。最后,这是程序截图:
第一个android程序,qq农场助理

附件是写好的程序.
1 楼 aixu521 2010-12-21  
提个建议,农场的key经常更新的。。。还是设置一下key改变,软件停止运行吧!
还有就是那个小小战争的,也做个android程序呗,O(∩_∩)O~
2 楼 wjjxf 2010-12-24  
aixu521 写道
提个建议,农场的key经常更新的。。。还是设置一下key改变,软件停止运行吧!
还有就是那个小小战争的,也做个android程序呗,O(∩_∩)O~

呵呵
3 楼 abc670454997 2011-10-20  
能否公布源码捏~~670454997@qq.com,不胜感激!~~第一个android程序,qq农场助理