.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;
            }
时间: 2024-12-23 08:14:00

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

登陆后设置cookie的方法

public void SetCookie(string userName, string role,string cookieValueName) {FormsAuthentication.FormsCookieName FormsAuthenticationTicket myTick = new FormsAuthenticationTicket(1, userName, System.DateTime.Now.AddMinutes(30),DateTime.Now, false, role

微信公众账户模拟登陆后的一系列操作

<?php header("content-type:text/html;charset=utf-8"); /** * wx_mass * * 完成微信公众账户模拟登陆后的一系列操作 * mass($content) 调用微信群发接口,群发文本信息 * getUserList($page,$pagesize,$group) 获取用户信息 * * 群发demo * * $user=array('account'=>'公众账户名称','password'=>'密码');

Weblogic重起后打开控制台登陆后响应极慢

linux下Weblogic 重启后第一次打开console登陆后响应极慢(20多分钟)(锁定并编辑第一次也极慢),以后速度就正常了,重启后又会极慢! 在网上看了看,是说linux下的java生成随机数据有bug! 修改 $JAVA_HOME/jre/lib/security/java.security 文件 将 securerandom.source=file:/dev/urandom 改为 securerandom.source=file:dev/./urandom 重启weblogic后再

mysql安装完之后,登陆后发现只有两个数据库

mysql安装完之后,登陆后发现只有两个数据库:mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema | | test               | +--------------------+,mysql> use mysqlERROR 1044 (42000): Access denied for user ''@'local

美团_ccListView选中Item的颜色修改及解决登陆后升级通知再次弹出的bug

实现,在listView Xml中设置 android:listSelector="@color/green" 2. 解决登陆后升级通知再次弹出的bug ①: MineFragment跳转到Login界面使用StartActivityForResult,而不是StartActivity: @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (data != n

Ubuntu Kylin 14.04LTS 开机后卡在登陆界面,可以进入字符界面,或者登陆后鼠标不显示但是管用

2014年4月27日,距离中期检查还有七天,基本上什么也没做,特别着急,雨已经下了快一天了,中午用美团外卖定的黄焖排骨,MD,什么玩意,那么一点点就18块钱,一看就不值五块钱,发誓再也不吃,最重要的是订完两个半小时才送到,饿过劲了都 吐槽一下Ubuntu 的谷歌输入法,真是不符合国人习惯 刚刚整好这个毛病,有种致之死地而后生的狂喜 ubuntu今天上午关机去win7,买了个东西回来就没法开机了,开机后卡在登陆界面,鼠标不能动,好不容易鼠标能动了,也能输入密码了,结果进去之后又卡住了,不显示桌面,

在一组降序排列的数组中插入一个数据,插入后,数组中数据依然按降序排列

分析: 1.数组固定,是一个倒序的数组 2.插入一个数据,这个数据插在哪呢,要比较,与数组中所有的元素比较,这里需要一个循环,因为是降序的数组,所以当第一次遇到比自己小的,那么这个位置就是要插入的位置 3.因为上一步被占了位置,那么从这个插入的数据开始,后面的原本的数据都得向右移一位 /** * */ package com.cn.u4; import java.util.Scanner; /** * @author Administrator *向有序数组中插入学员成绩 * 在一组降序排列的数

1.8-自动登陆后执行命令

再来看一个登陆后,执行命令然后退出的脚本: #!/usr/bin/expect set user "root" set passwd "123456" spawn ssh [email protected] expect { "yes/no" { send "yes\r"; exp_continue} "password:" { send "$passwd\r" } }        

Oracle EBS登陆后,直接打开某个特定Form/Page

http://blog.csdn.net/pan_tian/article/details/8169339 有一个小技巧,Oracle EBS登陆后可以绕过职责和功能的选择过程,就可以直接打开某个特定的Form,这样整个的登陆过程会更快. 方法:Oracle Application Home Page > Preferences > Start Page,输入起始的'Responsibility'和'Page',Apply之后,重新登陆,就可以绕过职责和功能的选择过程,直接打开某个特定的For