`
jbeduhai
  • 浏览: 505860 次
  • 性别: Icon_minigender_1
  • 来自: 山东
社区版块
存档分类
最新评论

HttpClient4模拟登录回贴

    博客分类:
  • java
阅读更多
经过HttpClient3 的N次处理,发现HttpClient3对Cookie的管理不是太好,总是传值出现问题,可以用HttpClient4一比较,发现他对Cookie的管理实在是太好了,不需要你去处理,下面是关于HttpClient4模拟登录回贴的代码,希望对用到这方面的朋友提供参考


package com.httpclient4; 

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
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.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;

public class MainLogin {
	public static void main(String[] args) throws ClientProtocolException,
			IOException {
		HttpClient httpClient = new DefaultHttpClient();

		List<NameValuePair> formparams = new ArrayList<NameValuePair>();
		formparams.add(new BasicNameValuePair("u_name", "jbeduhai"));
		formparams.add(new BasicNameValuePair("u_passwd", "xxx"));
		UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams,
				"UTF-8");

		HttpPost httppost = new HttpPost("http://passport.xxx.com.cn/login.jsp");
		httppost.setEntity(entity);
		HttpContext localContext = new BasicHttpContext();

		HttpResponse response2 = httpClient.execute(httppost, localContext);
		int statusCode = response2.getStatusLine().getStatusCode();
		System.out.println("statusCode:" + statusCode);
		System.out.println(EntityUtils.toString(response2.getEntity(),"UTF-8"));
		EntityUtils.consume(response2.getEntity());
		
		
		if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY
				|| statusCode == HttpStatus.SC_MOVED_TEMPORARILY
				|| statusCode == HttpStatus.SC_SEE_OTHER
				|| statusCode == HttpStatus.SC_TEMPORARY_REDIRECT) {
			String newUrl = response2.getLastHeader("Location").getValue();
			System.out.println("从新定向的页面为:" + newUrl);

			HttpGet get = new HttpGet(newUrl);
			HttpEntity entity2 = httpClient.execute(get, localContext)
					.getEntity();
			String homePage = EntityUtils.toString(entity2,"UTF-8");
			System.out.println(homePage);
			
			EntityUtils.consume(entity2);
			
			//取formhash值
			String formhash =null;
			if(homePage.indexOf("formhash=") != -1){
				int pos = homePage.indexOf("formhash=");
				formhash = homePage.substring(pos+9, pos+17);
				System.out.println("------formhash="+formhash);
			}
			
			List<NameValuePair> postFormparams = new ArrayList<NameValuePair>();
			postFormparams.add(new BasicNameValuePair("message", "很强的贴子啊,顶一个..."));
			postFormparams.add(new BasicNameValuePair("subject", ""));
			postFormparams.add(new BasicNameValuePair("formhash", formhash));
			UrlEncodedFormEntity postEntity = new UrlEncodedFormEntity(postFormparams,
					"UTF-8");
			
			String pUrl="http://www.xxx.cn/forum.php?mod=post&action=reply&fid=1270&tid=14365186&extra=page%3D1&replysubmit=yes&infloat=yes&handlekey=fastpost";
			HttpPost post3 = new HttpPost(pUrl);
			post3.setEntity(postEntity);
			HttpContext localContext3 = new BasicHttpContext();
			HttpResponse response3 = httpClient.execute(post3, localContext3);
			int statusCode3 = response3.getStatusLine().getStatusCode();
			System.out.println("statusCode3:" + statusCode3);
			System.out.println(EntityUtils.toString(response3.getEntity(),"UTF-8"));
			EntityUtils.consume(response3.getEntity());
		}
	}
	
}



  • lib.rar (952.6 KB)
  • 下载次数: 71
0
0
分享到:
评论
1 楼 wjpiao 2016-02-24  

相关推荐

    java httpclient 模拟登录

    在"java httpclient 模拟登录"这个场景下,我们通常会用到HttpClient来模拟用户登录网站的过程,获取登录后的session信息,以便后续能够访问登录后才能看到的页面内容。以下将详细介绍如何使用Java HttpClient进行...

    HttpClient模拟登录实例

    在本实例中,我们将探讨如何使用HttpClient库来模拟登录网站,获取用户信息,以及处理带有验证码的登录场景。 首先,我们需要理解HttpClient的基本使用。HttpClient的核心类包括HttpClient本身,HttpGet、HttpPost...

    (最新)HttpClient4模拟登录腾讯微博

    这篇最新的文章“HttpClient4模拟登录腾讯微博”探讨了如何利用HttpClient4实现对腾讯微博的模拟登录,这在自动化测试、数据抓取等场景中非常实用。 HttpClient4库提供了丰富的API,可以定制化地构造HTTP请求,包括...

    新浪,腾讯微博HttpClient4模拟登陆

    本文将深入探讨如何使用Java中的HttpClient4库来实现对新浪和腾讯微博的模拟登录。HttpClient4是一个强大的HTTP客户端库,它允许开发者执行HTTP请求并处理响应,非常适合进行网页交互。 首先,我们来看`Sina.java`...

    httpclient模拟登录实例

    本篇文章将详细讲解如何使用HttpClient进行模拟登录操作,结合源码分析,帮助开发者深入理解其工作原理。 HttpClient库由Apache基金会开发,提供了全面的HTTP协议支持,包括标准与扩展的HTTP方法、连接管理、重试...

    httpclient4之百度模拟登陆,回复与58同城自动登陆

    总的来说,HttpClient4提供了一个强大而灵活的框架,可以用来模拟登录各种网站,包括百度和58同城。然而,每个网站的登录机制都有所不同,所以需要根据具体情况进行调整和优化。在开发过程中,务必遵守网站的使用...

    httpclient4 微信公众账号模拟登陆

    httpclient4 微信公众账号模拟登陆,网络上看到的,觉得不错上传出来,供大家一起共同分享学习。

    httpclient如何保持session会话模拟登录后的操作

    本文将详细讲解如何使用HTTPClient来保持session会话,从而实现模拟登录后的其他操作。 首先,理解session的概念至关重要。Session是服务器端用来跟踪用户状态的一种机制。在Web应用中,当用户登录后,服务器会为该...

    java模拟淘宝登录源码

    Java模拟淘宝登录源码是一种常见的网络编程技术,主要...在实际开发中,为了提高代码的可维护性和复用性,通常会封装成一个通用的模拟登录类,包含初始化HTTPClient、构造请求、处理响应等功能,以适应不同的登录场景。

    HttpClient模拟登陆

    在这个场景中,我们将探讨如何使用HttpClient实现模拟登录操作。 首先,了解HttpClient的基本使用。HttpClient库提供了HttpClient实例,用于发送HTTP请求。创建HttpClient实例可以通过`HttpClientBuilder`类: ```...

    使用httpclient4登录blog.com

    以下是一个简单的使用HttpClient 4登录博客网站的步骤: 1. **创建HttpClient实例**:首先,我们需要创建一个`CloseableHttpClient`对象,这是HttpClient的主要入口点。我们可以使用`HttpClientBuilder`来构建它,...

    HttpClient4.3模拟登陆新版12306

    本篇文章将详细讲解如何利用HttpClient 4.3版本来模拟登录新版12306(中国铁路客户服务中心网站)。 1. **HttpClient介绍** HttpClient是Apache的一个开源项目,它提供了强大的HTTP协议处理能力和灵活的HTTP客户端...

    JAVA-用HttpClient来模拟浏览器GET,POST.docx

    JAVA使用HttpClient模拟浏览器GET、POST请求 在本文中,我们将介绍如何使用Apache Commons HttpClient库来模拟浏览器的GET和POST请求。HttpClient库是一个开放源码的项目,是Apache Commons项目的一部分,旨在简化...

    用HttpClient来模拟浏览器GET POST

    但是考虑到一些服务授权的问题,很多公司提供的页面往往并不是可以通过一个简单的URL就可以访问的,而必须经过注册然后登录后方可使用提供服务的页面,这个时候就涉及到COOKIE问题的处理。我们知道目前流行的***页...

    httpclient模拟登陆

    ### HTTPClient 模拟登录详解 #### 一、概述 HTTPClient是Apache组织下的一个开源项目,它提供了功能丰富的HTTP客户端开发工具包,可以用来发送HTTP请求并接收响应。利用HTTPClient,我们可以轻松实现模拟登录的...

    java web中 HttpClient模拟浏览器登录后发起请求

    Java Web 中 HttpClient 模拟浏览器登录后发起请求 Java Web 中 HttpClient 模拟浏览器登录后发起请求是指在 Java Web 应用程序中使用 HttpClient 库模拟浏览器的行为,模拟浏览器登录到服务器,然后发起请求获取...

    HttpClient 3.x to HttpComponents HttpClient 4.x

    随着技术的发展,从早期的HttpClient 3.x版本迁移到更新的HttpComponents HttpClient 4.x版本是一个常见的需求。这不仅仅是一个简单的升级过程,而是涉及到对API的变化、编程模型的更新以及对网络编程的更深层次理解...

Global site tag (gtag.js) - Google Analytics