加入收藏 | 设为首页 | 会员中心 | 我要投稿 | 在线留言 | RSS
成网科技业务包括域名空间企业网站制作
 
国际域名com/net/org仅售80元/年
1G独立空间(PHP+MYSQL)仅售600元/年
您当前的位置:首页 > 网络资讯 > 网站建设

Java实现网易163邮箱好友通讯录的解析功能(带源码)

时间:2012-05-24 11:44:00  来源:ij2ee.com  作者:  点击:

这个源码我之前开源过,昨晚又做了一下。公开源码。这里讲下思路以及真实源码实现。我们将使用1个类HttpClient,这个类的基本用法可以参照:aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

http://www.ibm.com/developerworks/cn/opensource/os-httpclient/aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

我们会使用httpClient以及Httpwatch工具。aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

正式开始:aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

首先,我们用我们的账户密码登录,这里是thieftest 密码a123456 为了他人方便,请不要修改密码aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

为了更快的找到对应的请求地址,我们直接搜索我们的用户名aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

我们获取了 https://ssl.mail.163.com/entry/coremail/fcg/ntesdoor2?df=webmail163&from=web&funcid=loginone&iframe=1&language=-1&net=t&passtype=1&product=mail163&race=234_62_188_db&style=-1&uid=thieftest@163.comaWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

这么一串字符串 ,我们可以看到它是一个POST请求,所以我们需要用httpclient的POST请求来请求服务器。aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

下面是POST和GET请求的核心代码,aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

public static String doGet(<span class="wp_keywordlink_affiliate"><a href="http://www.ij2ee.com/tag/httpclient" title="查看 HttpClient 中的全部文章" target="_blank">HttpClient</a></span> client, String url, String charCode)aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
throws URISyntaxException, IllegalStateException, IOException,aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
HttpException, InterruptedException {aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
HttpGet get = new HttpGet(url);aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
return StringUtil.readInputStream(client.execute(get).getEntity()aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
.getContent(), charCode);aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
}aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
public static String doPost(<span class="wp_keywordlink_affiliate"><a href="http://www.ij2ee.com/tag/httpclient" title="查看 HttpClient 中的全部文章" target="_blank">HttpClient</a></span> client, String url,aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Map<String, String> param, String charCode)aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
throws URISyntaxException, IllegalStateException, IOException,aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
HttpException, InterruptedException {aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
NameValuePair nvps[] = new BasicNameValuePair[param.size()];aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
int i = 0;aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
for (Map.Entry<String, String> entry : param.entrySet()) {aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
NameValuePair nvp = new BasicNameValuePair(entry.getKey(), entryaWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
.getValue());aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
nvps[i++] = nvp;aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
}aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
HttpPost httpPost = new HttpPost(url);aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
httpPost.setEntity(new UrlEncodedFormEntity(nvps, charCode));aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
HttpResponse response = client.execute(httpPost);aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
if(response.getStatusLine().getStatusCode()!=200){aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
throw new RuntimeException("网页抓取失败,HTTP CODE:"+response.getStatusLine().getStatusCode());aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
}aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
InputStream is = response.getEntity().getContent();aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
return StringUtil.readInputStream(is, charCode);aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
}aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

根据返回的信息我们分析成功与否,判断的方式就是看有没得到一个叫sid的参数aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

返回成功的话 会在消息里有 index?sid=xxxxxxxxx 这一段。 这里的xxxxxxx是至关重要的,我们需要获取他。 这里我们可以使用正则表达式。来获取 大概代码如下:aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

private static String regex = "iframe src=/"index.jsp//?sid=([^/"]+)";aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
public static String getByRegex(String regex, int index, String txt) {aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Pattern p = Pattern.compile(regex,Pattern.DOTALL);aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Matcher m = p.matcher(txt);aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
if (m.find()) {aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
return m.group(index);aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
}aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
return null;aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
}aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

点通讯后 我们抓包发现了一个URL 貌似记录都在里面。aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

是JSON的撒。要是数据多了 我们可以在www.bejson.com 上查看目录结构aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

但是我们请求这个URL后 发现它就返回了aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

<?xml version="1.0" encoding="UTF-8" ?>aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
<result>aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
<code>S_OK</code>aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
</result>

看来这条路不通啊。继续找把。忽然发现还有打印的操作能得到所有的我们想要的资料。aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

String getUsers="http://tg4a84.mail.163.com/jy3/address/addrprint.jsp?sid=前面获取的ID";

请求后得到如下内容aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

<div class="ContentWp add_print2">aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
<div class="ContentThemeWp">aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
<table width="100%" height="35px" border="0" cellpadding="0" cellspacing="0" bgcolor="f0f9fc">aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
<tr>aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
<td width="88%"><b>&nbsp;&nbsp;&nbsp;&nbsp;<span style=" font-size:16px">选择打印的项目</span></b>&nbsp;<input type="checkbox" name="phone" value="phone" onclick="fAddressPrintShow(this)">电话/即时通讯ID<input type="checkbox" name="home" value="home" onclick="fAddressPrintShow(this)">家庭资料<input type="checkbox" name="company" value="company" onclick="fAddressPrintShow(this)">单位/公司<input type="checkbox" name="other" value="other" onclick="fAddressPrintShow(this)">其他信息</span></td>aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
<td width="12%"><div align="center"><span style="background-color:#f0f9fc; height:35px; padding-top:8px"><input name="button" type="button" class="Btn BtnNml ImpBtn"  onMouseOver="this.className='Btn BtnHv ImpBtn'" onMouseOut="this.className='Btn BtnNml ImpBtn'" onMouseDown="this.className='Btn BtnHv BtnDw ImpBtn'" hidefocus="ture" value="打 印" style=" margin-bottom:8px" onclick="window.print();"/></span></div></td>aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
</tr>aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
</table>aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
<div class="Hr"><hr/>aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
</div><div class="gTitleSub"><div align="left"><b class="mTT">三少</b></div><div class="Extra"></div></div>aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
<table class="gTable"><tr id="tr_base_0" style=""><th>邮件地址:</th><td>ij2ee@139.com</td></tr><tr id="tr_base_0" style=""><th>移动电话:</th><td></td></tr><tr id="tr_base_0" style=""><th>生日:</th><td></td></tr><tr id="tr_home_2" style="display:none"><th>联系地址:</th><td>China 中国</td></tr><tr id="tr_company_3" style="display:none"><th>公司地址:</th><td>;;;;;;CI</td></tr><tr id="tr_other_4" style="display:none"><th>备注:</th><td>Java技术博客 www.ij2ee.com</td></tr>aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
</table>aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
<div class="Hr"><hr /></div><div class="gTitle"><div align="center"><span style="color:#999;">网易公司版权所有</span></div></div>aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
</div>aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
</div>aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

下面就剩下解析了。aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

具体的看源代码。aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

源码下载:http://115.com/file/bejbru4y#thief.rar 包含源码及jar包 下下来就可以跑,在test包里有测试用例aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

本文来源:http://www.ij2ee.com/49657.htmlaWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

感谢 三少 的投稿aWZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

成网科技 www.it28.com竭诚为您服务!
开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设_成网科技

更多
 


来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
相关文章
    无相关信息
栏目更新
栏目热门