本帖最后由 CherryMs 于 2013-11-16 23:57:22 编辑

解决方案 »

  1.   

    目测不是时效性问题 
    根据百度结果
    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 请问该如何解决呢
      

  2.   

    http://blog.csdn.net/jdgdf566/article/details/16357677
      

  3.   

    我也遇到这个问题了。不过我用的是C#在模拟。看了你的帖子,突然想到是不是应该用同一个request实例访问,下午验证一下!
      

  4.   

    上面有句写错了con.setRequestProperty("Cookie", cookies); //报错并不是这句报错请大家无视掉注释
      

  5.   

    10分。。下不起可用分兑换成资源分。
    我想知道用HttpURLConnection怎么解决 能给个思路么。。因为自己的代码里全是HttpURLConnection
      

  6.   

    找一下HttpClient的资料,可以模拟浏览器行为,我以前用它做过新浪微博登录
      

  7.   


    使用了您的包了 依然是页面会被重定向
    我的类是不会重定向的。返回的重定向头信息,不会导致重定向。原因应该是,返回的页面,除了头信息含有重定向这一条,它的页面内容也是另一个页面的内容。插入下面的代码
            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中含有过期时间等其他信息,需要处理后再发回去。这样直接发回去,也可能是可以的,这取决于各种服务器脚本是怎么对待的。那就要对字符串进行处理了。
      

  8.   

    对cookie的处理是非常复杂的,我的类自动完成,你不需要管cookie。你需要先进行登录。登录之后,再new一个请求,这个新请求的需要发送的cookie你不用管,它会自动使用第一个请求返回的cookie(其中不符合条件的不发送回去,过期、路径等)。你可以看看我的博客上的示例。