`
bao231
  • 浏览: 87422 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

httpclient 163邮箱登陆

阅读更多
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.StringRequestEntity;

public class NewTest {

/**
* @param args
* @throws IOException
* @throws HttpException
*/
public static void main(String[] args) throws Exception {
HttpClient client = new HttpClient();
///////////////////////////////第一次登陆/////////////////////////////
List<NameValuePair> data = new ArrayList<NameValuePair>();
data.add(new NameValuePair("verifycookie", "0"));
data.add(new NameValuePair("product", "mail163"));
data.add(new NameValuePair("username", "zhangbaoxin231@163.com"));
data.add(new NameValuePair("password", "3266472"));
PostMethod httpPost = new PostMethod(

"http://reg.163.com/login.jsp?type=1&url=http://entry.mail.163.com/coremail/fcg/ntesdoor2?lightweight%3D1%26verifycookie%3D1%26language%3D-1%26style%3D-1");
httpPost.setRequestBody(data
.toArray(new NameValuePair[data.size()]));
// httpPost.getParams().setParameter("http.protocol.cookie-policy",CookiePolicy.BROWSER_COMPATIBILITY);
httpPost.setFollowRedirects(false);
client.executeMethod(httpPost);
BufferedReader in=new BufferedReader(new InputStreamReader(httpPost.getResponseBodyAsStream(),"UTF-8"));
StringBuffer buffer=new StringBuffer();
String line;
while ((line = in.readLine()) != null) {
buffer.append(line);
}
StringBuffer bu1 = new StringBuffer();
for(Cookie c : client.getState().getCookies())
{
bu1.append(c.getName());
bu1.append("=");
bu1.append(c.getValue());
bu1.append("\n");
}
System.err.println(bu1.toString());
httpPost.releaseConnection();

int a = buffer.indexOf("window.location.replace(\"");
int b = buffer.indexOf("\"",a+25);
System.err.println(buffer.toString().substring(a+25,b));

////////////////////////////////////////////////////////////

PostMethod httpPost1 = new PostMethod(buffer.toString().substring(a+25,b));
client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);

  //一定要有,否则会生成多个Cookie header送给web server
client.getParams().setParameter("http.protocol.single-cookie-header",true);
client.getParams().setParameter("http.protocol.content-charset","gb2312");
client.executeMethod(httpPost1);

StringBuffer bu2 = new StringBuffer();
for(Cookie c : client.getState().getCookies())
{
bu2.append(c.getName());
bu2.append("=");
bu2.append(c.getValue());
bu2.append("\n");
}
System.err.println(bu2.toString());
BufferedReader in2=new BufferedReader(new InputStreamReader(httpPost1.getResponseBodyAsStream()));
StringBuffer buffer2=new StringBuffer();
String line2;
while ((line2 = in2.readLine()) != null) {
buffer2.append(line2);
}
System.out.println(buffer2.toString().trim());
String content = httpPost1.getResponseHeader("Location").getValue();
String sessId = null;
sessId = content.substring(content.indexOf("sid=")+4);
System.err.println(httpPost1.getResponseHeader("Location").getValue());
String trueUrlString = content.substring(0,content.indexOf("."))+ ".mail.163.com/js3/s?sid="+ sessId+"&func=global:sequential";
    System.err.println(trueUrlString);
   
    /////////////////////////////////////////////////////////
   
       PostMethod pm1 = new PostMethod(trueUrlString);

pm1.setRequestEntity(new StringRequestEntity("<?xml version=\"1.0\"?><object><array name=\"items\"><object><string name=\"func\">pab:searchContacts</string><object name=\"var\"><array name=\"order\"><object><string name=\"field\">FN</string><boolean name=\"ignoreCase\">true</boolean></object></array></object></object><object><string name=\"func\">user:getSignatures</string></object><object><string name=\"func\">pab:getAllGroups</string></object></array></object>","application/xml","UTF-8"));
//pm1.getParams().setParameter("http.protocol.cookie-policy",CookiePolicy.BROWSER_COMPATIBILITY);
// pm1.setRequestHeader("Cookie", cookies.toString());   
client.executeMethod(pm1);

BufferedReader in1=new BufferedReader(new InputStreamReader(pm1.getResponseBodyAsStream()));
StringBuffer buffer1=new StringBuffer();
String line1;
while ((line1 = in1.readLine()) != null) {
buffer1.append(line1);
}
StringBuffer bu = new StringBuffer();
for(Cookie c : client.getState().getCookies())
{
bu.append(c.getName());
bu.append("=");
bu.append(c.getValue());
bu.append("\n");
}
System.err.println(bu.toString());
System.err.println("66"+buffer1.toString());










}

}
分享到:
评论
3 楼 qxpidt 2014-07-02  
我运行了下,没有获取到163邮箱的主页内容,
2 楼 qxpidt 2014-07-02  
你登录成功后,能成功获取到主页的文本吗?
1 楼 qxpidt 2014-07-02  
楼主,你这个程序,你测试过了吗?

相关推荐

    HttpClient 登录163邮箱

    在本例中,我们将探讨如何使用HttpClient登录163邮箱。 1. **HttpClient基本概念** HttpClient库提供了对HTTP协议的全面支持,包括各种HTTP方法(GET、POST、PUT等)、重定向处理、身份验证、cookie管理等。它的...

    c#实现的邮箱登陆器

    总的来说,C#实现的163邮箱登陆器项目涵盖了从基本的编程概念到网络通信、安全性和用户体验等多个方面的知识。对于初学者来说,它提供了一个全面学习和实践C#编程技能的平台,同时也是一次提升编程和问题解决能力的...

    java开发实现163邮件发送(支持附件

    在Java开发中,实现163邮箱发送功能是一项常见的任务,尤其当需要自动化监控系统运行状态并及时报告异常时。163邮箱提供了一个SMTP(Simple Mail Transfer Protocol)服务,允许开发者通过编程方式发送电子邮件,...

    C#读取网页验证码 (读取163邮箱)

    首先,我们需要导入`System.Net.Http`命名空间,创建一个HttpClient实例,并使用其GetAsync方法来请求163邮箱的验证码页面。例如: ```csharp using System.Net.Http; using System.Threading.Tasks; public async...

    C#读取网页验证码的示例 (读取163邮箱)

    本文将深入探讨如何使用C#语言来读取网页上的验证码,特别是针对163邮箱的验证码。我们将讲解相关的编程概念、技术及步骤,以便开发者能够构建自己的验证码读取解决方案。 首先,要理解C#读取网页验证码的基本流程...

    通过代码获取邮箱联系人(126、163)

    本项目专注于通过代码方式获取126和163邮箱的联系人列表,这通常涉及到邮件服务API的调用和身份验证。下面将详细阐述实现这一功能的关键知识点。 1. **邮箱API接口**: - 126和163邮箱由网易公司提供,它们提供了...

    获取yahoo,sina,tom,gmail,163等邮箱通信录

    5. **163**:网易163邮箱提供了POP3/IMAP协议和SMTP协议,虽然不直接提供获取通信录的API,但可以通过IMAP协议读取存放在邮箱中的通讯录文件。 在ASP.NET C#中实现上述功能,你需要以下步骤: 1. **设置开发环境**...

    C# 利用POST传值方式一键登录126邮箱源码

    请注意,实际的登录过程可能会涉及更复杂的步骤,如处理Cookie以维持会话,或者使用HttpClient类(在.NET Framework 4.5及以上版本可用)以简化请求操作。此外,为了安全起见,用户凭据不应硬编码在源码中,而应从...

    邮箱通讯录获取asp.net

    本项目以"邮箱通讯录获取asp.net"为标题,表明我们将探讨如何在ASP.NET平台上实现从Gmail、MSN、163和Yahoo!等主流邮箱服务中获取用户通讯录的功能。下面将详细讲解这个过程涉及的关键知识点。 1. **OAuth认证**:...

    下载QQ邮件附件并将其标为已读C#源码

    - QQ邮箱的API限制可能会影响到其他邮箱,如SINA和163,因此在编写代码时需要考虑兼容性。 综上所述,实现下载QQ邮件附件并将其标为已读的C#源码,主要涉及QQ邮箱API的使用,OAuth2.0授权,HTTP请求的发送,JSON...

    TAC接口文档10-30+函数使用1

    接口的请求地址中包含了IP地址,例如172.50.163.162和123.207.96.94,这表明服务端的API部署在这些IP对应的服务器上。 8. **数据安全** 虽然示例代码没有详细讨论,但在实际应用中,密码通常需要进行加密处理,以...

    C# 文件下载写入临时文件带进度条的哦

    在C#编程中,文件下载是一项常见的任务,特别是在Web应用中。...以下是实现这一功能的关键知识点: 1. **文件下载**: 在C#中,我们通常使用`...如果有任何改进意见或问题,可以联系邮箱:aiouluosi.cool@163.com。

Global site tag (gtag.js) - Google Analytics