日期:2014-05-17  浏览次数:20450 次

HttpURLConnection 得不到cookie里的sessionID?
目标网站:http://shua.zhuzhuxc.com
访问时,用wireshark抓包,可以看到 Cookie:AJSTAT_ok_times=8; AJSTAT_ok_pages=17; ASP.NET_SessionId=fq0cag55golsxin5xzndadzg
可是用HttpURLConnection时,就是得不到,查了资料后,发现,.net里好像是在第一次访问时,给客户分配一个非永久性的 cookie,不会放在cookies文件夹里,只放在内存中,是不是这样,就没法用程序得到这个ASP.NET_SessionId了呢? 顺便问一下,在抓包中看到提交的数据中LoginBtn.x=12&LoginBtn.y=58,请问这两个数据是怎么来的,我在提交的表单中硬是没找到啊,我是学java,对net不是很熟,谢谢帮助!
我用的java,代码如下:
Java code

    public static void main(String[] args) throws Exception {
        URL url = new URL("http://shua.zhuzhuxc.com/login.aspx");
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        Map map = urlConnection.getHeaderFields();
        Set ks = map.keySet();
        for (Iterator iterator = ks.iterator(); iterator.hasNext();) {
            String key = (String) iterator.next();
            System.out.println(key+":"+map.get(key));
        }
    }


得到的结果如下:
null:[HTTP/1.1 200 OK]
X-AspNet-Version:[2.0.50727]
Date:[Fri, 12 Nov 2010 03:17:48 GMT]
Content-Length:[15881]
Content-Type:[text/html; charset=utf-8]
Server:[Microsoft-IIS/6.0]
X-Powered-By:[ASP.NET]
Cache-Control:[private]


------解决方案--------------------
Cookies:
Response.Cookies["username"].Value = TextBox1.Text.Trim(); //保存 
Response.Cookies["username"].Expires = DateTime.Now.AddDays(1);//过期时间 
this.Label1.Text = "用户名:" + Request.Cookies["username"].Value;//获取 

Session:
Session["SessionID"]=TextBox1.Text.Trim(); //保存 
TextBox1.Text=Session["SessionID"].ToString();//获取
------解决方案--------------------
LoginBtn.x=12&LoginBtn.y

是点击<input name="LoginBtn" type=image src="x.gif">这样的提交按钮生成的