《实现网易163邮箱好友通讯录的解析功能.docx》由会员分享,可在线阅读,更多相关《实现网易163邮箱好友通讯录的解析功能.docx(6页珍藏版)》请在三一办公上搜索。
1、实现网易163邮箱好友通讯录的解析功能Java实现网易163邮箱好友通讯录的解析功能(带源码) 这个源码我之前开源过,昨晚又做了一下。公开源码。这里讲下思路以及真实源码实现。我们将使用1个类HttpClient,这个类的基本用法可以参照: .ibm/developerworks/cn/opensource/os-httpclient/ 我们会使用httpClient以及Httpwatch工具。 正式开始: 首先,我们用我们的账户密码登录,这里是thieftest 密码a123456 为了他人方便,请不要修改密码 为了更快的找到对应的请求地址,我们直接搜索我们的用户名 我们获取了 https:/
2、ssl.mail.163/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=thieftest163 这么一串字符串 ,我们可以看到它是一个POST请求,所以我们需要用httpclient的POST请求来请求服务器。 下面是POST和GET请求的核心代码, public static String doGet(HttpClient clie
3、nt, String url, String charCode) throws URISyntaxException, IllegalStateException, IOException, HttpException, InterruptedException HttpGet get = new HttpGet(url); return StringUtil.readInputStream(client.execute(get).getEntity .getContent, charCode); public static String doPost(HttpClient client, S
4、tring url, Map param, String charCode) throws URISyntaxException, IllegalStateException, IOException, HttpException, InterruptedException NameValuePair nvps = new BasicNameValuePairparam.size; int i = 0; for (Map.Entry entry : param.entrySet) NameValuePair nvp = new BasicNameValuePair(entry.getKey,
5、entry .getValue); nvpsi+ = nvp; HttpPost httpPost = new HttpPost(url); httpPost.setEntity(new UrlEncodedFormEntity(nvps, charCode); HttpResponse response = client.execute(httpPost); if(response.getStatusLine.getStatusCode!=200) throw new RuntimeException(网页抓取失败,HTTP CODE:+response.getStatusLine.getS
6、tatusCode); InputStream is = response.getEntity.getContent; return StringUtil.readInputStream(is, charCode); 根据返回的信息我们分析成功与否,判断的方式就是看有没得到一个叫sid的参数 返回成功的话 会在消息里有 index?sid=xxxxxxxxx 这一段。 这里的xxxxxxx是至关重要的,我们需要获取他。 这里我们可以使用正则表达式。来获取 大概代码如下: private static String regex = iframe src=index.jsp?sid=(+); pu
7、blic static String getByRegex(String regex, int index, String txt) Pattern p = Patternpile(regex,Pattern.DOTALL); Matcher m = p.matcher(txt); if (m.find) return m.group(index); return null; 点通讯后 我们抓包发现了一个URL 貌似记录都在里面。 是JSON的撒。要是数据多了 我们可以在.bejson 上查看目录结构 但是我们请求这个URL后 发现它就返回了 S_OK 看来这条路不通啊。继续找把。忽然发现还有
8、打印的操作能得到所有的我们想要的资料。 String getUsers=tg4a84.mail.163/jy3/address/addrprint.jsp?sid=前面获取的ID; 请求后得到如下内容 选择打印的项目 电话/即时通讯ID家庭资料单位/公司其他信息 三少 邮件地址:ij2ee139移动电话:生日:联系地址:China 中国公司地址:;CI备注:Java技术博客 .ij2ee 网易公司版权所有 下面就剩下解析了。 具体的看源代码。 源码下载:115/file/bejbru4y#thief.rar 包含源码及jar包 下下来就可以跑,在test包里有测试用例 本文来源:.ij2ee/49657.html 注: 文章来源:淘宝货源