import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class HttpClient4ITEYELogin { private CloseableHttpClient httpClient = HttpClients.createDefault(); private String getAuthenticity_token(String html) { Document doc = Jsoup.parse(html); return doc.select("form#login_form input[name=authenticity_token]") .attr("value"); } /** * 获取iTeye登录页面 * * @param url * @return * @throws IOException * @throws ClientProtocolException */ private String getITEyePageContent(String url) throws Exception { StringBuffer result = new StringBuffer(); // 设置请求信息 HttpGet request = new HttpGet(url); request.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0"); request.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); request.setHeader("Accept-Language", "zh-CN,zh;q=0.8,en-GB;q=0.6,en;q=0.4,zh-TW;q=0.2"); // 发送请求 HttpResponse response = httpClient.execute(request); int statusCode = response.getStatusLine().getStatusCode(); // statusCode==200表示请求成功. System.out.println("\nSending 'GET' request to URL : " + url); System.out.println("Response Code : " + statusCode); // 读取返回内容解析成字符串 BufferedReader br = new BufferedReader(new InputStreamReader(response .getEntity().getContent(), "utf-8")); String line = ""; while ((line = br.readLine()) != null) { result.append(line); } //关闭资源 br.close(); return result.toString(); } /** * 设置请求头 * */ public void setRequestHeader(HttpUriRequest request) { request.setHeader("Host", "www.iteye.com"); request.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0"); request.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); request.setHeader("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3"); request.setHeader("Accept-Encoding", "gzip, deflate"); request.setHeader("Referer", "http://www.iteye.com/login"); request.setHeader("Connection", "keep-alive"); } private List<NameValuePair> getParameters(String username, String password) throws Exception { List<NameValuePair> parameters = new ArrayList<NameValuePair>(); parameters.add(new BasicNameValuePair("name", username)); parameters.add(new BasicNameValuePair("password", password)); parameters .add(new BasicNameValuePair( "authenticity_token", getAuthenticity_token(getITEyePageContent("http://www.iteye.com/login")))); parameters.add(new BasicNameValuePair("remember_me", "1")); return parameters; } public void login(String url, String username, String password) throws Exception { HttpPost httpPost = new HttpPost(url); setRequestHeader(httpPost); // 设置请求参数 List<NameValuePair> parameters = getParameters(username, password); HttpEntity httpEntity = new UrlEncodedFormEntity(parameters); System.out.println("send parameters: " + parameters); httpPost.setEntity(httpEntity); HttpResponse response = httpClient.execute(httpPost); // 状态码 System.out.println("StatesCode:" + response.getStatusLine().getStatusCode()); BufferedReader br = new BufferedReader(new InputStreamReader(response .getEntity().getContent(), "utf-8")); StringBuffer sb = new StringBuffer(); while (br.ready()) { sb.append(br.readLine()); } // 打印HTML System.out.println(sb.toString()); // 关闭资源 br.close(); } public static void main(String[] args) throws Exception { // 打开cookie HttpClient4ITEYELogin httpClient4ITEYELogin = new HttpClient4ITEYELogin(); httpClient4ITEYELogin.getITEyePageContent("http://www.iteye.com/login"); httpClient4ITEYELogin.login("http://www.iteye.com/login", "your name", "your password"); //关闭httpClient String indexHtml = httpClient4ITEYELogin.getITEyePageContent("http://www.iteye.com/"); //看看有没有欢迎xxx登录 System.out.println(indexHtml); httpClient4ITEYELogin.httpClient.close(); } }
关键点:首次访问先把authenticity_token取到,这个为input type="hiden"可以通过jsoup取到这个值,这个值会变化,每次关闭浏览器,再重新访问,这个值就会变,没运行一次HttpClient4ITEYELogin这个值也会变
相关推荐
在这个`httpclient4.3工具类`中,我们看到的是一个自定义的`httpclientUtils`,它是为了满足特定项目需求而编写的,集成了常见的HTTP操作。 HttpClient 4.3主要知识点包括: 1. **连接管理**:HttpClient 4.3引入...
HttpClient 4.3版本是对该库的一次重要更新,提供了更多的功能和优化。这个封裝工具类是对HttpClient 4.3进行的二次开发,旨在简化HTTP请求的处理,解决一些常见的问题,如代理设置、多线程并发请求、SSL安全连接...
《HttpClient 4.3.x详解及其依赖分析》 HttpClient是一个由Apache基金会开发的Java库,主要用于执行HTTP请求。HttpClient 4.3.x是该库的一个重要版本,它提供了丰富的功能和改进,使得开发者能够更方便地与Web...
本篇文章将详细讲解如何利用HttpClient 4.3版本来模拟登录新版12306(中国铁路客户服务中心网站)。 1. **HttpClient介绍** HttpClient是Apache的一个开源项目,它提供了强大的HTTP协议处理能力和灵活的HTTP客户端...
在这个"httpClient4.3 Jar包 demo"中,你将找到HttpClient 4.3的jar文件以及相关的示例代码,对于学习和理解HttpClient的使用非常有帮助。 HttpClient 4.3主要知识点包括: 1. **基础概念**: - **HttpClient对象...
这个"httpClient4.3官方包"包含了HttpClient 4.3.1版本的所有源代码和必要的文档文件,使得用户可以直接在自己的项目中使用或进行深入学习。 HttpClient 4.3版本引入了许多改进和新特性,如支持最新的HTTP/1.1和...
HttpClient 4.3是一个重要的版本,它提供了许多改进和新特性,使得开发者可以更高效、更灵活地与Web服务器进行交互。这个压缩包包含了HttpClient 4.3版本所需的jar文件和其他依赖库,以确保能够正确运行基于...
HttpClient 4.3 版本是该库的一个稳定版本,提供了许多改进和新特性,以增强性能和易用性。 HttpClient 4.3 的核心概念包括: 1. **HttpClient 实例**:这是执行 HTTP 请求的基础。开发者通常会创建一个 ...
描述中提到的链接指向了一个ITEYE博客,虽然内容未给出,但可以推测博主可能分享了关于使用HTTPClient 4.3.X的一些经验,可能包括配置,最佳实践,或者是遇到的问题及解决方案。 标签 "源码" 暗示我们可能会讨论到...
### HttpClient 4.3 中文版相关知识点 #### 一、概述 Apache HttpClient 是一个用于构建 HTTP 客户端的应用程序编程接口 (API),属于 Apache Jakarta Commons 的一部分。该库支持 HTTP 协议的最新标准,并提供了...
《Apache HttpClient 4.3详解》 Apache HttpClient是一款开源的Java库,专为执行HTTP请求而设计,广泛应用于各类Web服务的开发中。其版本4.3是该库的一个重要迭代,提供了诸多改进和新特性,旨在提升性能、稳定性和...
本知识点将详细介绍HTTPClient 4.3在爬虫开发中的应用及其主要组件。 一、HTTPClient 4.3的安装与引入 在Java项目中使用HTTPClient 4.3,首先需要下载相关的jar包。提供的"httpclient43"压缩包应包含所有必需的依赖...
HttpClient 4.3版本是一个重要的里程碑,它引入了许多新特性、优化和改进,旨在提高性能,增强稳定性和易用性。这个教程可能是针对开发者设计的,帮助他们深入理解和有效地使用HttpClient 4.3进行网络请求。 ...
标题中的“httpclient4.3登陆人人”指的是使用Apache HttpClient 4.3版本实现对人人网的自动登录功能。HttpClient是一个流行的开源Java库,它允许开发者执行HTTP请求并处理响应,广泛应用于网络爬虫、自动化测试和...
HttpClient 4.3是一个重大的更新,它引入了诸多增强功能和性能优化。首先,HttpClient 4.3支持了HTTP/1.1和HTTP/2协议,使开发者可以利用HTTP/2的多路复用(multiplexing)特性,提高并发请求的效率,减少网络延迟。...
在HttpClient 4.3版本中,这个库进行了许多改进和优化,使其更适用于复杂的网络通信需求。本教程将详细介绍HttpClient 4.3的主要特性和使用方法。 一、HttpClient简介 HttpClient是一个Java库,它允许开发人员执行...
HttpClient 4.3是其一个重要的版本,提供了许多新特性和改进,以提升性能和易用性。这个压缩包包含两份文档,一份是.docx格式,一份是.pdf格式,两者内容相同,都是关于HttpClient 4.3的中文版指南。 HttpClient的...
HttpClient 4.3 是 Apache 开源组织提供的一个用于构建 HTTP 客户端应用程序的强大库,主要专注于 HTTP 协议的实现。它建立在 HttpCore 库之上,支持传统的阻塞 I/O 模型,适用于各种需要高效、可控的 HTTP 交互的...
这个压缩包“httpclient4.3 封装工具类.zip”很可能包含了一些预先封装好的工具类,用于简化使用HttpClient进行网络请求的过程。以下是一些关于HttpClient 4.3以及如何封装工具类的关键知识点: 1. **HttpClient ...
javase http通讯技术 apache httpclient4.3 设置代理详解