利用HTTP取MSN联系人过程

来源:互联网 发布:苹果手机屏幕录制软件 编辑:程序博客网 时间:2024/05/15 07:02

利用HTTP取MSN联系人过程


1.登录页
http://login.live.com/
可以得到登录提交参数和相应的post地址

 

2.登录参数
login  -- 用户名
passwd  --  密码
LoginOptions  -- 登录选项,用值2即可
type -- 为空即可
PPFT -- 一个很长的字串,从input标签中取
PPSX -- 一个短的字串,从input标签中取
PwdPad --
   String pwdpad = "IfYouAreReadingThisYouHaveTooMuchFreeTime";
   以上的字串从后面截去密码长度的字符串的值

 

3.post请求
https://login.live.com/ppsecure/post.srf?bk=1259466182
后面需要加入一个参数bk=System.currentTimeMillis()

 

4.取联系人
1)首先,取得http://people.live.com/?rru=contacts页面的内容


2)这个页面中有一个iframe,指向真正的联系人页面,可以利用正则表达式得到
如:
<iframe id="UIFrame" name="UIFrame"  src="http&#58;&#47;&#47;bl107w.blu107.mail.live.com&#47;mail&#47;ContactMainLight.aspx&#63;n&#61;552148275" onload="uiFrameLoad();"
src后面就是联系人首页的地址
如:
http://bl107w.blu107.mail.live.com/mail/ContactMainLight.aspx?n=552148275
这里url进行了编码,需要进行解码
content.replaceAll("&#58;", ":")
       .replaceAll("&#47;", "/")
       .replaceAll("&#63;", "?")
       .replaceAll("&#38;", "&")
       .replaceAll("&#61;", "=");
同时,也要得到host的地址,后面要用到


3)取得联系人的循环
得到第一页的联系人
同时看页面中还有没有形如 “ContactMainLight.aspx?ContactsSortBy=FileAs&Page=”的链接形式
如果有的话,访问下一页;链接形如:http://bl107w.blu107.mail.live.com/mail/ContactMainLight.aspx?ContactsSortBy=FileAs&Page=2&n=552148275
如果没有的话,则到最后一页了,跳出循环


4)取某一页的联系人
页面回复中有如下的json数据
window.cxp_ic_menu_data = {里面是数据};
从页面中取回json数据后,可以得到联系人
用System.out.println()打印联系人姓名时,可以看到 &#22528;&#36741; 形式的编码,这是HTML中汉字的unicode码,需要将其转换成相应汉字
可以利用查表法,先将编码和汉字的对应放到一个Map中,然后利用编码查找相应汉字