HttpClient模拟登录回贴
来源:互联网 发布:java快速排序代码 递归 编辑:程序博客网 时间:2024/06/06 10:56
经过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()); } } }
用到的jar包如下
- HttpClient模拟登录回贴
- httpclient 模拟登录发贴
- Apache HttpClient模拟登录
- java httpclient 模拟登录
- httpClient模拟新浪登录
- httpclient模拟登录
- Apache HttpClient模拟登录
- Apache HttpClient模拟登录
- httpclient模拟登录
- 使用httpclient模拟登录
- 使用httpclient模拟登录
- HttpClient模拟登录手机版微博
- java 使用httpclient模拟登录
- selenium + httpclient 邮箱模拟登录
- httpclient模拟登录上海交大jaccount
- HttpClient 实例模拟登录 查询数据
- HttpClient模拟登录12306购票网站
- Php模拟登录工具类 HttpClient
- HDU 1158 Common Subsequence
- Android Intent的几种用法全面总结
- 有效利用索引和SQL构造,成功解决性能问题的经验
- Codeforces Round #129 (Div. 2)
- C语言插件机制
- HttpClient模拟登录回贴
- git 使用详解(3)-- get log 查看提交历史
- 由年月日如何算出星期数
- Java远程方法调用(RMI)机制
- Brute-Force算法 (eg.Binary String Matching)
- hadoop集群balance工具详解
- java数组基础知识
- 命令远程执行小结
- sql 语句 在sql server中查出的数据,在c#后台变没了?