之前做过关于邮箱导入好友的操作,用到这个,现在有时间就总结一下。
package com.test;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.cyberneko.html.parsers.DOMParser;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
/**
* HttpClient的学习
*/
public class HttpClientTest {
private HttpClient httpClient;
public HttpClientTest() {
httpClient = new HttpClient();
httpClient.getParams().setParameter("http.protocol.content-charset", "UTF-8");//设置请求编码
}
/**
* doPost方式访问mail.163.com
*/
public String doPostRequest163(String userName, String password) {
String result = null;
//loginURL分析mail.163.com页面获得
String loginUrl = "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";
PostMethod postMethodObj = new PostMethod(loginUrl);
//post 提交参数params 分析mail.163.com页面获得
NameValuePair[] params = { new NameValuePair("verifycookie", "1"), new NameValuePair("product", "mail163"), new NameValuePair("username", userName), new NameValuePair("password", password), new NameValuePair("selType", "jy") };//极速版
try {
postMethodObj.setRequestBody(params);
httpClient.executeMethod(postMethodObj);
result = postMethodObj.getResponseBodyAsString();
System.out.println("com.test.HttpClientTest.doPostRequest163请求" + loginUrl + "页面:\n" + result);//登录成功
//跳转页面,分析跳转页面获取如下URL,此外,注意doGetRequer163,doPostRequest163共用HttpClient
result = doGetRequer163("http://entry.mail.163.com/coremail/fcg/ntesdoor2?lightweight=1&verifycookie=1&language=-1&style=&username=" + userName);
//到此为止完全进入邮箱
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
postMethodObj.releaseConnection();//关闭请求
}
return result;
}
/**
* doGet方式访问mail.163.com
*/
public String doGetRequer163(String loginUrl) {
String result = null;
if (null == loginUrl) {//默认访问http://mail.163.com
loginUrl = "http://mail.163.com";
}
GetMethod getMethodObj = new GetMethod(loginUrl);//设置请求链接
try {
httpClient.executeMethod(getMethodObj);//请求链接
result = getMethodObj.getResponseBodyAsString();//获取响应内容
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
getMethodObj.releaseConnection();//关闭请求
}
System.out.println("com.test.HttpClientTest.doGetRequer163请求" + loginUrl + "页面:\n" + result);
return result;
}
/**
* HTML 内容的解析
*
* @param pageContent
*/
public void parseHTML(String pageContent) {
DOMParser parser = new DOMParser();
try {
InputSource is = new InputSource(new ByteArrayInputStream(pageContent.getBytes("GBK")));
parser.parse(is);
NodeList nodeList = parser.getDocument().getElementsByTagName("input");
for (int i = 0, j = nodeList.getLength(); i < j; i++) {
Node node = nodeList.item(i);
System.out.println(node.getNodeName() + "\t" + node.getAttributes().getNamedItem("name") + "\t" + node.getAttributes().getNamedItem("value"));
}
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
/**
* 邮箱登录过程
* 1 登录mail.163.com
* 2 post 提交用户名密码
* 3 跳转链接
* OK
*/
HttpClientTest httpClientTest = new HttpClientTest();
String pageContent = httpClientTest.doGetRequer163(null);
httpClientTest.parseHTML(pageContent);//访问mail.163.com
httpClientTest.doPostRequest163("zhouxianglh", "密码不能告诉你");//登录
}
}
commons-httpclient-3.2.jar httpClient jar相关
nekohtml.jar 解析html相关
顺便上传方便下载
分享到:
相关推荐
首先,我们需要导入`System.Net.Http`命名空间,创建一个HttpClient实例,并使用其GetAsync方法来请求163邮箱的验证码页面。例如: ```csharp using System.Net.Http; using System.Threading.Tasks; public async...
在Java开发中,实现163邮箱发送功能是一项常见的任务,尤其当需要自动化监控系统运行状态并及时报告异常时。163邮箱提供了一个SMTP(Simple Mail Transfer Protocol)服务,允许开发者通过编程方式发送电子邮件,...
请注意,实际的登录过程可能会涉及更复杂的步骤,如处理Cookie以维持会话,或者使用HttpClient类(在.NET Framework 4.5及以上版本可用)以简化请求操作。此外,为了安全起见,用户凭据不应硬编码在源码中,而应从...
本项目专注于通过代码方式获取126和163邮箱的联系人列表,这通常涉及到邮件服务API的调用和身份验证。下面将详细阐述实现这一功能的关键知识点。 1. **邮箱API接口**: - 126和163邮箱由网易公司提供,它们提供了...
本文将深入探讨如何使用C#语言来读取网页上的验证码,特别是针对163邮箱的验证码。我们将讲解相关的编程概念、技术及步骤,以便开发者能够构建自己的验证码读取解决方案。 首先,要理解C#读取网页验证码的基本流程...
5. **163**:网易163邮箱提供了POP3/IMAP协议和SMTP协议,虽然不直接提供获取通信录的API,但可以通过IMAP协议读取存放在邮箱中的通讯录文件。 在ASP.NET C#中实现上述功能,你需要以下步骤: 1. **设置开发环境**...
【C#实现的邮箱登陆器】是一个基于C#编程语言开发的应用程序,旨在帮助用户登录并管理163邮箱。这个项目对于初学者来说是一个很好的实践案例,因为它涉及到网络通信、用户界面设计以及数据验证等多个关键知识点。让...
本项目以"邮箱通讯录获取asp.net"为标题,表明我们将探讨如何在ASP.NET平台上实现从Gmail、MSN、163和Yahoo!等主流邮箱服务中获取用户通讯录的功能。下面将详细讲解这个过程涉及的关键知识点。 1. **OAuth认证**:...
- QQ邮箱的API限制可能会影响到其他邮箱,如SINA和163,因此在编写代码时需要考虑兼容性。 综上所述,实现下载QQ邮件附件并将其标为已读的C#源码,主要涉及QQ邮箱API的使用,OAuth2.0授权,HTTP请求的发送,JSON...
接口的请求地址中包含了IP地址,例如172.50.163.162和123.207.96.94,这表明服务端的API部署在这些IP对应的服务器上。 8. **数据安全** 虽然示例代码没有详细讨论,但在实际应用中,密码通常需要进行加密处理,以...
在C#编程中,文件下载是一项常见的任务,特别是在Web应用中。...以下是实现这一功能的关键知识点: 1. **文件下载**: 在C#中,我们通常使用`...如果有任何改进意见或问题,可以联系邮箱:aiouluosi.cool@163.com。