.net程序控制post数据 需登陆后保持session的方法

最近在网上发现一些有意思的东西,想抓下来,被一个小问题给卡住了,程序如何发送post请求都没法得到想要的结果,利用火狐仔细研究下发现需要打开一次页面,再提交参数就ok,这就好办了

学过网页编程的都知道,session保持会话状态,使得类似登陆功能可以连续保持。

但用程序发送post请求的时候,session就会丢失。

究其原因,还是要看session的原理。

其实session一般都有个sessionID保存在cookie里。

每次请求数据都会发送上次的cookie到服务器。

PHP的一般为 PHPSESSIONID

asp.NET的好像是ASPNETSESSIONID

.....

其实只要把请求返回的sesionID给保存下来。再赋值给下次要请求的request对象就OK了,只要此次session在服务端没过期。

如下代码实现:

private static CookieContainer m_Cookie = new CookieContainer();
private static string post(string postURL, string postData, Encoding pageEncoding)
        {
            HttpWebRequest httpWebRequest;
            HttpWebResponse httpWebResponse;

            byte[] bytesToPost = pageEncoding.GetBytes(postData);
            try
            {
                httpWebRequest = WebRequest.Create(postURL) as HttpWebRequest;
                httpWebRequest.Method = "POST";
                httpWebRequest.KeepAlive = true;
                httpWebRequest.ContentType = "application/x-www-form-urlencoded";
                httpWebRequest.CookieContainer = m_Cookie;//设置上一个访问页面的cookie 保持session  
                httpWebRequest.ContentLength = bytesToPost.Length;

                Stream requestStream = httpWebRequest.GetRequestStream();
                requestStream.Write(bytesToPost, 0, bytesToPost.Length);//写入post信息  
                requestStream.Close();

                httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse;
                m_Cookie = httpWebRequest.CookieContainer;//访问后更新cookie  
                Stream responseStream = httpWebResponse.GetResponseStream();
                string resData;

                using (StreamReader resSR = new StreamReader(responseStream, pageEncoding))
                {
                    resData = resSR.ReadToEnd();
                    resSR.Close();
                    responseStream.Close();
                }
                return resData;


            }
            catch (Exception err)
            {

                throw err;
            }

 

转载于:https://www.cnblogs.com/ccuc/p/6437390.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值