急!!关于使用HttpClient登录到指定网站的问题!! 当前有一个网站,用户登录时必须要输入用户名,密码以及验证码,我使用HttpClient通过在客户端输入用户名和密码的方式直接登录中后台,现在的问题是我没法读取验证码,验证码是随机生成的,请问我应该如何解决这个问题,请各位大侠们帮我考虑考虑,不胜感谢!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当运行主方法时,我是首先通过生成验证码的链接地址得到验证码数据,同时显示JLABEL中,然后在文本框中分别输入用户名,密码,验证码,点击登录,抓取的信息显示验证码出错,我想服务器上的验证码信息存在SESSION中的,请问有什么好的方法. 部分代码如下:得到验证码: httpClient.executeMethod(method); if (method.getStatusCode() == HttpStatus.SC_OK) { InputStream response = method.getResponseBodyAsStream(); byte[] b = new byte[4096]; int length = -1; if ((length = response.read(b)) != -1) { ImageIcon icon = new ImageIcon(b); randImg.setIcon(icon); } }登录代码:GetMethod method = new GetMethod(url+"&testcode="+randInput.getText()); int statusCode = 0; System.out.println("登录中......"); statusCode = httpClient.executeMethod(method); String result = method.getResponseBodyAsString(); System.out.println(result); System.out.println(statusCode); 我解决了,想通了其实很简单,每一次NEW一个HttpClient相当于新生成一个session id,但如果每次都用同一个HttpClient相当于共同一个session id既然是同一个ID,验证码自然就是同一个验证码了,之前主要对HttpClinent没有深入了解它,还好没浪费太多时间去解决!! 当运行主方法时,我是首先通过生成验证码的链接地址得到验证码数据,当然有SESSIONID 了, 每个验证码都是和这个关联的, 你的从返回的数据中,截获cookie 里面的JSessionID, 下次登录请求时,记得把这个cookie传过去。不过据说 httpClient 会自动处理这个,你是不是读取和登录用了不同的httpClient啊! 一个问题解决了,另一个问题又来了,还是关于HTTPCLIENT的,可能是网络的问题,有时候提交上去挺快的,而有时候就有些慢,像用户登录,帐号没问题,但也会出现登录不上的原因,而且提交后,响应时间也有时快,有时慢,必须在事件响应返回之后,才能够执行其它操作以上相关问题,大家有好的解决方案吗, 当运行主方法时,我是首先通过生成验证码的链接地址得到验证码数据, 当然有SESSIONID 了, 每个验证码都是和这个关联的, 你的从返回的数据中,截获cookie 里面的 JSessionID, 下次登录请求时,记得把这个cookie传过去。 不过据说 httpClient 会自动处理这个,你是不是读取和登录用了不同的httpClient啊! 获取参数问题 如何得到前五个月的年月份 如何求两个List的差集? java万年历 一个简单问题,哪位大哥进来帮帮忙?在线等待,解决问题后马上结帖! 哥哥们呀 来呀 关于ArrayList的问题,在线等 现在面临就业问题,请有Java工作经验的朋友帮忙出个主意!!! 关于java打印的问题请教!急,在线! servlet能调用jni做的DLL 吗? 急!!!请教高手在用poi解析Excel文件中解析数字类型的困惑 [急]java.net.SocketException: Connection reset by peer: socket write error
httpClient.executeMethod(method);
if (method.getStatusCode() == HttpStatus.SC_OK) {
InputStream response = method.getResponseBodyAsStream();
byte[] b = new byte[4096];
int length = -1;
if ((length = response.read(b)) != -1) {
ImageIcon icon = new ImageIcon(b);
randImg.setIcon(icon);
}
}
登录代码:
GetMethod method = new GetMethod(url+"&testcode="+randInput.getText());
int statusCode = 0;
System.out.println("登录中......");
statusCode = httpClient.executeMethod(method);
String result = method.getResponseBodyAsString();
System.out.println(result);
System.out.println(statusCode);
每一次NEW一个HttpClient相当于新生成一个session id,
但如果每次都用同一个HttpClient相当于共同一个session id
既然是同一个ID,验证码自然就是同一个验证码了,
之前主要对HttpClinent没有深入了解它,
还好没浪费太多时间去解决!!
JSessionID, 下次登录请求时,记得把这个cookie传过去。不过据说 httpClient 会自动处理这个,你是不是读取和登录用了不同的httpClient啊!
JSessionID, 下次登录请求时,记得把这个cookie传过去。 不过据说 httpClient 会自动处理这个,你是不是读取和登录用了不同的httpClient啊!