wap开发中发现Session丢失!?

因为我使用了WebRequest请求数据,比如A.aspx页面请求B.aspx页面,结果发现B.aspx登录后,再次请求B.aspx的时候session丢失了,在WebRequest上设置cookie之后,再次请求B.aspx上可以得到Session,却有发现A.aspx上的Session丢失了,我K,所以就有了如下代码来解决,
不知道有没有更简单的方法,请高人指点?如此之后wap和web上都有了session, Opera和E680i测试通过
--------C#代码------------------------------------------------
HttpWebRequest webRequest = null;
                Stream stream = null;
                try
                {
                    Uri uri = new Uri(url);
                    webRequest = (HttpWebRequest)WebRequest.Create(uri);
                    webRequest.ContentType = "application/x-www-form-urlencoded";
                    webRequest.UseDefaultCredentials = true;
                    webRequest.Credentials = CredentialCache.DefaultCredentials;


                    //string cookieheader = "";
                    //if(webRequest.CookieContainer != null)
                    //   cookieheader = webRequest.CookieContainer.GetCookieHeader(new Uri(url));
                    
                    //CookieContainer cookieCon = new CookieContainer();
                    //webRequest.CookieContainer = cookieCon;
                    //webRequest.CookieContainer.SetCookies(new Uri(url), cookieheader);
                   //如果cookie存在,则需要将cookie设置并且post,否则在请求页面得不到session
                   if (Session["cookie"] != null )
                   {
                       Log.Write(Session["cookie"].ToString());
                       //cookie???header
                       webRequest.Headers.Add("Cookie",Session["cookie"].ToString());
                        //发现这里主页面session丢失的话,需要重新设置主页面的session,不知道是不是microsoft的bug,有时候上传文件session也会丢失,只能重新设置
                       if (Session["user"] == null)
                       {
                           string cookie = Session["cookie"].ToString();
                           string userid = System.Text.RegularExpressions.Regex.Replace(cookie, "(.*)userid=([^&]+)&(.*)", "$2");
                           Log.Write(userid);
                           if (userid.Length == Guid.Empty.ToString().Length)
                           {
                               Yesun.Edzh.Model.User user = new Yesun.Edzh.BLL.UserService().GetModel(new Guid(userid));
                               Session.Add("user", user);
                           }
                       }
                   }

                    if (postdata != null && postdata != "")
                    {
                        webRequest.Method = "POST";
                        Stream postStream = webRequest.GetRequestStream();
                        byte[] pPostBytes = System.Text.Encoding.UTF8.GetBytes(postdata);
                        postStream.Write(pPostBytes, 0, pPostBytes.Length);
                        postStream.Flush();
                        postStream.Close();
                    }
                    else
                    {
                        webRequest.Method = "GET";
                    }
                   WebResponse response = webRequest.GetResponse();

                   if (response.Headers["Set-Cookie"] != null && !response.Headers["Set-Cookie"].Equals(""))
                   {   //如果请求页面返回的数据中包含了cookie,则需要保存下来,以便再次请求的时候设置header
                       Session.Add("cookie", response.Headers.Get("Set-Cookie"));
                   }

                   //取得返回数据
                   stream = response.GetResponseStream();
                    objXml = new XmlDataDocument();
                    objXml.Load(stream);

                }
                catch (Exception ex)
                {
                    Log.Write(ex.Message);
                    Log.Write(ex.StackTrace);
                    objXml = new XmlDataDocument();
                    objXml.LoadXml("<root><msg>"+ ex.Message +"</msg></root>");
                }
                finally
                {
                    if (webRequest != null)
                    {
                        webRequest = null;
                    }
                    if (stream != null)
                    {
                        stream.Close();
                        stream = null;
                    }
                }




--------Java部分代码---------------------------------------


try {
            URL url = new URL(serverUrl);
            URLConnection conn = url.openConnection();
            conn.setDoOutput(true);
            
            //如果cookie存在,则发送过去
            if(request.getSession().getAttribute("cookie") != null)
            {
                conn.setRequestProperty("Cookie", request.getSession().getAttribute("cookie").toString());
            }
            // post数据到服务器
            OutputStreamWriter osw = new OutputStreamWriter(conn.getOutputStream());
            osw.write(postData);
            osw.flush();
            osw.close();
            // 接收返回的数据xml
            BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
           
            if(conn.getHeaderField("Set-Cookie") != null && !conn.getHeaderField("Set-Cookie").equals(""))
            {
                request.getSession().setAttribute("cookie", conn.getHeaderField("Set-Cookie"));
            }

            String tmp = "";
            String line = null;
            while ((line = br.readLine()) != null) {
                tmp += line;
            }
            br.close();
            // 转化为xml
            tmp = new String(tmp.getBytes(), "utf-8");
            //System.out.println("Response : " + tmp);
            objXmlReturn = org.dom4j.DocumentHelper.parseText(tmp);
        } catch (Exception e) {
            e.printStackTrace();
        }


原文地址:https://www.cnblogs.com/yesun/p/676866.html