关于COOKIES时效问题 本帖最后由 CherryMs 于 2013-11-16 23:57:22 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 目测不是时效性问题 根据百度结果http://blog.csdn.net/totogogo/article/details/1831588通过HttpURLConnection来模拟模拟用户登录Web服务器,服务器使用cookie进行用户认证。在模拟登录时,Post表单数据后可以正确登录(登陆成功时会response一个cookie,然后redirect到main page,不成功则redirect到login page),但是在使用HttpURLConnection再次连接服务器其他页面(或者即使是当前的response里是redirect的page)时,服务器都会认为是全新的一个Session。但是我用博文里的方法也是无法访问…… 他的方法还是new了一个HttpURLConnection 请问该如何解决呢 http://blog.csdn.net/jdgdf566/article/details/16357677 我也遇到这个问题了。不过我用的是C#在模拟。看了你的帖子,突然想到是不是应该用同一个request实例访问,下午验证一下! 上面有句写错了con.setRequestProperty("Cookie", cookies); //报错并不是这句报错请大家无视掉注释 10分。。下不起可用分兑换成资源分。我想知道用HttpURLConnection怎么解决 能给个思路么。。因为自己的代码里全是HttpURLConnection 找一下HttpClient的资料,可以模拟浏览器行为,我以前用它做过新浪微博登录 使用了您的包了 依然是页面会被重定向我的类是不会重定向的。返回的重定向头信息,不会导致重定向。原因应该是,返回的页面,除了头信息含有重定向这一条,它的页面内容也是另一个页面的内容。插入下面的代码 Map<String, List<String>> headersMap = httpUrlConn.getHeaderFields(); for (Map.Entry<String, List<String>> entry : headersMap.entrySet()) { String string = entry.getKey(); List<String> list = entry.getValue(); for (String string1 : list) { System.out.println(string + " : " + string1); } }打印出第一个请求返回的头信息,应该可以看到Location :这个信息。说明并未执行这一条指令,并未到另一个页面,另一个页面没有这个指令。插入下面的代码 Map<String, List<String>> headersMap = con.getHeaderFields(); for (Map.Entry<String, List<String>> entry : headersMap.entrySet()) { String string2 = entry.getKey(); List<String> list = entry.getValue(); for (String string1 : list) { System.out.println(string2 + " : " + string1); } }可以打印出第二个请求返回的头信息。那么,你的问题出在cookie上。你处理cookie的方法是有问题的。你把第四行改成String cookies = httpUrlConn.getHeaderField("Set-Cookie");试试可以了不。如果还不行,cookie中含有过期时间等其他信息,需要处理后再发回去。这样直接发回去,也可能是可以的,这取决于各种服务器脚本是怎么对待的。那就要对字符串进行处理了。 对cookie的处理是非常复杂的,我的类自动完成,你不需要管cookie。你需要先进行登录。登录之后,再new一个请求,这个新请求的需要发送的cookie你不用管,它会自动使用第一个请求返回的cookie(其中不符合条件的不发送回去,过期、路径等)。你可以看看我的博客上的示例。 一个小问题。。 急:java绘制拓扑图(百分) 一个字符串操作问题 以下语句可以实现类同步吗? 亲爱的你在哪里? 初学请帮忙?? 请问有没有java里有没有像vc里msdn那样的文档呀 求jBuild8 序列号 高手帮忙--HELP!HELP!HELP!!! 救命啊,哪位可怜可怜,给我mail个cldc吧!(一定给分的)我都快挂了 请问我这样引用画笔对吗?在线等 请帮我看一个这个日历输出程序,输出有点问题,我不知怎么改
根据百度结果
http://blog.csdn.net/totogogo/article/details/1831588通过HttpURLConnection来模拟模拟用户登录Web服务器,服务器使用cookie进行用户认证。在模拟登录时,Post表单数据后可以正确登录(登陆成功时会response一个cookie,然后redirect到main page,不成功则redirect到login page),但是在使用HttpURLConnection再次连接服务器其他页面(或者即使是当前的response里是redirect的page)时,服务器都会认为是全新的一个Session。
但是我用博文里的方法也是无法访问…… 他的方法还是new了一个HttpURLConnection 请问该如何解决呢
我想知道用HttpURLConnection怎么解决 能给个思路么。。因为自己的代码里全是HttpURLConnection
使用了您的包了 依然是页面会被重定向
我的类是不会重定向的。返回的重定向头信息,不会导致重定向。原因应该是,返回的页面,除了头信息含有重定向这一条,它的页面内容也是另一个页面的内容。插入下面的代码
Map<String, List<String>> headersMap = httpUrlConn.getHeaderFields();
for (Map.Entry<String, List<String>> entry : headersMap.entrySet()) {
String string = entry.getKey();
List<String> list = entry.getValue();
for (String string1 : list) {
System.out.println(string + " : " + string1);
}
}
打印出第一个请求返回的头信息,应该可以看到Location :这个信息。说明并未执行这一条指令,并未到另一个页面,另一个页面没有这个指令。
插入下面的代码
Map<String, List<String>> headersMap = con.getHeaderFields();
for (Map.Entry<String, List<String>> entry : headersMap.entrySet()) {
String string2 = entry.getKey();
List<String> list = entry.getValue();
for (String string1 : list) {
System.out.println(string2 + " : " + string1);
}
}
可以打印出第二个请求返回的头信息。那么,你的问题出在cookie上。你处理cookie的方法是有问题的。你把第四行改成
String cookies = httpUrlConn.getHeaderField("Set-Cookie");
试试可以了不。
如果还不行,cookie中含有过期时间等其他信息,需要处理后再发回去。这样直接发回去,也可能是可以的,这取决于各种服务器脚本是怎么对待的。那就要对字符串进行处理了。