做毕业设计需要下载一些数据,因此并没有深入学过这方面的东西,技术比较弱,小女子先要谢谢各位技术达人的热情帮助程序部分老早就写好了,一直很OK,今天TEST的时候,忽然就不行了。
先用POSTMETHOD自动登陆,打印出getResponseBodyAsString后,发现登陆成功了。
然后用GETMETHOD访问一个页面,打印出getResponseBodyAsString后,发现是登陆状态并且页面跳转成功了。
接着用GETMETHOD访问不同一个页面(同一个页面也试过,不行),打印出getResponseBodyAsString后,虽然还是能得到页面内容,但却没有登陆信息了。发现,虽然自动登陆成功,并能成功的GETMETHOD一次,但第二次GETMETHOD肯定就不行了晕这是什么原理啊
我想是不理和HTTPCLIENT在GETMETHOD一次后,里面的参数发生了什么变化???纯瞎猜,这方面我太白痴了。多奇怪啊,以前用这个程序获取数据的时候是没有问题的,我GETMETHOD几次都没问题
我想是不是网站限制了呢?因为做课程设计需要一些数据支持,所以哎,而且现在换数据太麻烦了。效果肯定会掉下一大截。大家对于这种现象,有没有什么建议和想法请大家帮帮我吧~~~~神啊。
先用POSTMETHOD自动登陆,打印出getResponseBodyAsString后,发现登陆成功了。
然后用GETMETHOD访问一个页面,打印出getResponseBodyAsString后,发现是登陆状态并且页面跳转成功了。
接着用GETMETHOD访问不同一个页面(同一个页面也试过,不行),打印出getResponseBodyAsString后,虽然还是能得到页面内容,但却没有登陆信息了。发现,虽然自动登陆成功,并能成功的GETMETHOD一次,但第二次GETMETHOD肯定就不行了晕这是什么原理啊
我想是不理和HTTPCLIENT在GETMETHOD一次后,里面的参数发生了什么变化???纯瞎猜,这方面我太白痴了。多奇怪啊,以前用这个程序获取数据的时候是没有问题的,我GETMETHOD几次都没问题
我想是不是网站限制了呢?因为做课程设计需要一些数据支持,所以哎,而且现在换数据太麻烦了。效果肯定会掉下一大截。大家对于这种现象,有没有什么建议和想法请大家帮帮我吧~~~~神啊。
{
HttpClient client = new HttpClient();
client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
client.getHostConfiguration().setHost(LOGON_SITE, LOGON_PORT);
//登录
PostMethod post = new PostMethod("/login");
post
.setRequestHeader(
"User-Agent",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.4.154.25 Safari/525.19"); NameValuePair username = new NameValuePair("email", "××××");
NameValuePair password = new NameValuePair("password", "××××");
NameValuePair rem = new NameValuePair("remember", "yes");
post.setRequestBody(new NameValuePair[] { username, password,rem });
client.executeMethod(post);
String responseString = new String(post.getResponseBodyAsString().getBytes(
"gbk"));
System.out.println(responseString);
Cookie[] cookies = client.getState().getCookies();
client.getState().addCookies(cookies);
post.releaseConnection();
//以get方式请求跳转页面,第一次成功
GetMethod get = new GetMethod("网页一次");
get.setRequestHeader("Accept-Language", "zh-cn");
get.setRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 2.0.50727)");
get.setRequestHeader("Host", "www.douban.com");
get.setRequestHeader("Connection", "Keep-Alive");
get.setRequestHeader("Cookie", cookies.toString());
client.executeMethod(get);
responseString = new String(get.getResponseBodyAsString().getBytes("gbk"));
System.out.println(responseString);
get.releaseConnection(); cookies = client.getState().getCookies();
client.getState().addCookies(cookies); //以get方式请求跳转页面,第二次却失败了!!!
get = new GetMethod("网页两次");
get.setRequestHeader("Accept-Language", "zh-cn");
get.setRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 2.0.50727)");
get.setRequestHeader("Host", "www.douban.com");
get.setRequestHeader("Connection", "Keep-Alive");
get.setRequestHeader("Cookie", cookies.toString());
client.executeMethod(get);
responseString = new String(get.getResponseBodyAsString().getBytes("gbk"));
System.out.println(responseString);
get.releaseConnection();
}
http://www.nabble.com/Session-handling-in-HttpClient-td18106268.html
http://www.velocityreviews.com/forums/t137578-keeping-session-alive-using-jakarta-httpclient.html
不行啊,我换成client.executeMethod(get);
try {
Thread.currentThread().sleep(1000);
} catch (InterruptedException e) {
}
client.executeMethod(get); 同一个GET,执行两次executeMethod,第一次成功,第二次还是不成功。而且我发现不是肯定不成功,偶尔第二次是带有登陆信息的,决大数时候都会告诉我没有权限访问,因为只有登陆的用户才可以访问啊。