实现网易163邮箱好友通讯录的解析功能Java实现网易163邮箱好友通讯录的解析功能(带源码)这个源码我之前开源过,昨晚又做了一下。公开源码。这里讲下思路以及真实源码实现。我们将使用1个类HttpClient,这个类的基本用法可以参照:.ibm/developerworks/cn/opensource/os-httpclient/我们会使用httpClient以及Httpwatch工具。正式开始:首先,我们用我们的账户密码登录,这里是thieftest密码a123456为了他人方便,请不要修改密码为了更快的找到对应的请求地址,我们直接搜索我们的用户名我们获取了=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这么一串字符串,我们可以看到它是一个POST请求,所以我们需要用httpclient的POST请求来请求服务器。下面是POST和GET请求的核心代码,publicstaticStringdoGet(class=wp_keywordlink_affiliatehref=.ij2ee/tag/httpclienttitle=查看HttpClient中的全部文章target=_blankHttpClientclient,Stringurl,StringcharCode)throwsURISyntaxException,IllegalStateException,IOException,HttpException,InterruptedException{HttpGetget=newHttpGet(url);returnStringUtil.readInputStream(client.execute(get).getEntity().getContent(),charCode);}publicstaticStringdoPost(class=wp_keywordlink_affiliatehref=.ij2ee/tag/httpclienttitle=查看HttpClient中的全部文章target=_blankHttpClientclient,Stringurl,MapthrowsURISyntaxException,IllegalStateException,IOException,HttpException,InterruptedException{NameValuePairnvps[]=newBasicNameValuePair[param.size()];inti=0;for(Map.Entry{NameValuePairnvp=newBasicNameValuePair(entry.getKey(),entry.getValue());nvps[i++]=nvp;}HttpPosthttpPost=newHttpPost(url);httpPost.setEntity(newUrlEncodedFormEntity(nvps,charCode));HttpResponseresponse=client.execute(httpPost);if(response.getStatusLine().getStatusCode()!=200){thrownewRuntimeException(网页抓取失败,HTTPCODE:+response.getStatusLine().getStatusCode());}InputStreamis=response.getEntity().getContent();returnStringUtil.readInputStream(is,charCode);}根据返回的信息我们分析成功与否,判断的方式就是看有没得到一个叫sid的参数返回成功的话会在消息里有index?sid=xxxxxxxxx这一段。这里的xxxxxxx是至关重要的,我们需要获取他。这里我们可以使用正则表达式。来获取大概代码如下:privatestaticStringregex=iframesrc=\index.jsp\\?sid=([^\]+);publicstaticStringgetByRegex(Stringregex,intindex,Stringtxt){Patternp=Patternpile(regex,Pattern.DOTALL);Matcherm=p.matcher(txt);if(m.find()){returnm.group(index);}returnnull;}点通讯后我们抓包发现了一个URL貌似记录都在里面。是JSON的撒。要是数据多了我们可以在.bejson上查看目录结构但是我们请求这个URL后发现它就返回了看来这条路不通啊。继续找把。忽然发现还有打印的操作能得到所有的我们想要的资料。StringgetUsers=tg4a84.mail.163/jy3/address/addrprint.jsp?sid=前面获取的ID;请求后得到如下内容cellpadding=0cellspacing=0bgcolor=f0f9fcfont-size:16px选择打印的项目type=checkboxname=phonevalue=phoneonclick=fAddressPrintShow(this)电话/即时通讯IDtype=checkboxname=homevalue=homeonclick=fAddressPrintShow(this)家庭资料type=checkboxname=companyvalue=companyonclick=fAddressPrintShow(this)单位/公司type=checkboxname=othervalue=otheronclick=fAddressPrintShow(this)其他信息style=background-color:#f0f9fc;height:35px;padding-top:8pxBtnNmlImpBtnonMouseOver=this.className='BtnBtnHvImpBtn'onMouseOut=this.className='BtnBtnNmlImpBtn'onMouseDown=this.className='BtnBtnHvBtnDwImpBtn'hidefocus=turevalue=打印style=margin-bottom:8pxonclick=window.print();/class=mTT三少件地址:style=id=tr_base_0style=id=tr_home_2style=display:nonestyle=display:nonestyle=display:none客.ij2eealign=center网易公司版权所有下面就剩下解析了。具体的看源代码。源码下载:115/file/bejbru4y#thief.rar包含源码及jar包下下来就可以跑,在test包里有测试用例本文来源:.ij2ee/49657.html注:文章来源:淘宝货源