httpClient如何利用会话继续访问 本帖最后由 lishuiqing 于 2012-11-15 17:25:10 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你后面使用url访问的时候 原来的URL后面加个jsessionid=xxxxxxxxxx 就应该可以吧例如http://127.0.0.1:8080/myTest/uploadBlogPhotoAction.action;jsessionid=xxxxxxxxxxx HttpClient自带Cookie管理能力,也就是可以管理好你那个jSessionID从你描述的情况来看,大致两种可能:1、登录过程实际上失败了,或者没有完成;2、目标网站用了更复杂的技术来防止 机器人 登录,最常用的就是复杂JS计算等。 不行的。我已经解决问题了。DefaultHttpClient httpclient = new DefaultHttpClient( new ThreadSafeClientConnManager()); try { HttpPost httpost = new HttpPost(url); // 添加参数 List<NameValuePair> nvps = new ArrayList<NameValuePair>(); if (params != null && params.keySet().size() > 0) { Iterator iterator = params.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = (Entry) iterator.next(); nvps.add(new BasicNameValuePair((String) entry.getKey(), (String) entry.getValue())); } } //设置请求的编码格式 httpost.setEntity(new UrlEncodedFormEntity(nvps, Consts.UTF_8)); //登录一遍 httpclient.execute(httpost); //然后再第二次请求普通的url即可。 httpost = new HttpPost(url2); BasicResponseHandler responseHandler = new BasicResponseHandler(); System.out.println(httpclient.execute(httpost, responseHandler)); } finally { // 关闭请求 httpclient.getConnectionManager().shutdown(); } 主要是上面的DefaultHttpClient httpclient = new DefaultHttpClient( new ThreadSafeClientConnManager()); 楼主,我按照你这样改了,第二次请求的sessionid还是无效的,能请教一下是什么原因吗 求救求救Exception creating bean of class org.apache.struts.validator.DynaActionForm: tomcat服务启动报如下错误 Hibernate中删除数据的一些问题 request和response跳转的区别? 关于商品类别的处理 struts简化开发--使用动态Form简化开发??????? 高手求助!C写的客户端调用java的服务端无返回值! 求struts1+hibernate分页 新人,求解释!! 谁用j2ee sdk1.4 ? java 方向,想考个认证 你敢来帮我回答下嘛!
例如
http://127.0.0.1:8080/myTest/uploadBlogPhotoAction.action;jsessionid=xxxxxxxxxxx
1、登录过程实际上失败了,或者没有完成;
2、目标网站用了更复杂的技术来防止 机器人 登录,最常用的就是复杂JS计算等。
new ThreadSafeClientConnManager());
try { HttpPost httpost = new HttpPost(url);
// 添加参数
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
if (params != null && params.keySet().size() > 0) {
Iterator iterator = params.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Entry) iterator.next();
nvps.add(new BasicNameValuePair((String) entry.getKey(),
(String) entry.getValue()));
}
}
//设置请求的编码格式
httpost.setEntity(new UrlEncodedFormEntity(nvps, Consts.UTF_8));
//登录一遍
httpclient.execute(httpost);
//然后再第二次请求普通的url即可。
httpost = new HttpPost(url2);
BasicResponseHandler responseHandler = new BasicResponseHandler();
System.out.println(httpclient.execute(httpost, responseHandler));
} finally {
// 关闭请求
httpclient.getConnectionManager().shutdown();
}
DefaultHttpClient httpclient = new DefaultHttpClient(
new ThreadSafeClientConnManager());