winform保存登录cookie
在web程序中,我们通常使会使用cookie来保存一些用户状态,或者权限或者你想保存的东西,但是在CS程序中,如果要使用cookie就必须要做些功课了。。。
最好注意以下几点:
1.使用成员变量:CookieContainer mycookie=new CookieContainer();
2.在每个HttpWebRequest创建后赋值 CookieContainer 属性 request.CookieContainer = mycookie;
3.在每次创建响应HttpWebResponse时将cookie的内容重新写回请求中
response.Cookies = mycookie.GetCookies(request.RequestUri);
最好注意以下几点:
1.使用成员变量:CookieContainer mycookie=new CookieContainer();
2.在每个HttpWebRequest创建后赋值 CookieContainer 属性 request.CookieContainer = mycookie;
3.在每次创建响应HttpWebResponse时将cookie的内容重新写回请求中
response.Cookies = mycookie.GetCookies(request.RequestUri);
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using System.Web; using System.Windows.Forms; namespace APPTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // private const string baseUrl = ""; private CookieContainer mycookie=new CookieContainer(); private CookieCollection cookieCollection = new CookieCollection(); private void Form1_Load(object sender, EventArgs e) { txtbaseUrl.Text = "http://passport.baidu.com/center"; txtparams.Text = "{\"loginname\":\"...\",\"loginpwd\":\"...\"}"; txtType.Text = "Post"; /* uuid:db1921de-421b-4f8d-8ca4-664c7cfcd0c7 loginname:1234 nloginpwd:123 loginpwd:123 machineNet: machineCpu: machineDisk: authcode:mfcv dAsFXMIFRN:fDFLH */ } private void btnOK_Click(object sender, EventArgs e) { mydata data = new mydata { url=txtUrl.Text, param=txtparams.Text, type=txtType.Text }; if (data.type.ToUpper()=="GET") { richTextBox1.Text = GetDataWithMyClass(data); }else{ richTextBox1.Text = PostDataWithMyClass(data); } } private string GetDataWithMyClass(mydata data) { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(string.Format("{0}{1}/{2}",txtbaseUrl.Text,data.url,data.param)); request.CookieContainer = mycookie; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); string ret = string.Empty; Stream s; string strValue = ""; if (response.StatusCode == HttpStatusCode.OK) { response.Cookies = mycookie.GetCookies(request.RequestUri); s = response.GetResponseStream(); StreamReader Reader = new StreamReader(s, Encoding.UTF8); strValue = Reader.ReadToEnd(); Reader.Close(); } return strValue; } private string PostDataWithMyClass(mydata data) { // 将提交的字符串数据转换成字节数组 byte[] postData = Encoding.UTF8.GetBytes(data.param); // 设置提交的相关参数 HttpWebRequest request = WebRequest.Create(string.Format("{0}{1}", txtbaseUrl.Text, data.url)) as HttpWebRequest; request.Method = data.type; request.KeepAlive = false; request.AllowAutoRedirect = true; request.ContentType = "application/x-www-form-urlencoded"; // request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"; request.CookieContainer = mycookie; request.ContentLength = postData.Length; // 提交请求数据 System.IO.Stream outputStream = request.GetRequestStream(); outputStream.Write(postData, 0, postData.Length); outputStream.Close(); HttpWebResponse response; Stream responseStream; StreamReader reader; string srcString; try { response = request.GetResponse() as HttpWebResponse; response.Cookies = mycookie.GetCookies(request.RequestUri); responseStream = response.GetResponseStream(); reader = new System.IO.StreamReader(responseStream, Encoding.UTF8); srcString = reader.ReadToEnd(); cookieCollection = response.Cookies; reader.Close(); return srcString; } catch (Exception e) { MessageBox.Show(e.Message,"错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } return ""; } private void radioButton1_CheckedChanged(object sender, EventArgs e) { if (((RadioButton)sender).Checked) { txtbaseUrl.Text = "http://passport.baidu.com/center"; txtparams.Text = "{\"loginname\":\"\",\"loginpwd\":\"\"}"; txtType.Text = "Post"; } else { txtbaseUrl.Text = "http://jd2008.jd.com/JdHome/OrderList.aspx"; txtparams.Text = ""; txtType.Text = "Get"; } } } public class mydata { public string remark { get; set; } public string text { get; set; } public string url { get; set; } public string param { get; set; } public string type { get; set; } } }