C#带cookie Post和Get方式发送数据,保持cookie
2016-10-08 00:20
561 查看
在实际编程中,可能需要读取特定网页的信息,但很多网站需要用户登录后,才能够获取相关的页面内容,这就需要编程者先临时存储当前的cookie, 在C#中可以使用CookieContainer 对象来保存登录后的Cookie信息,这样,在每次发送数据的时候,附加上Cookie信息,就可以了。
#region 同步通过POST方式发送数据 /// <summary> /// 通过POST方式发送数据 /// </summary> /// <param name="Url">url</param> /// <param name="postDataStr">Post数据</param> /// <param name="cookie">Cookie容器</param> /// <returns></returns> public string SendDataByPost(string Url,string postDataStr,ref CookieContainer cookie) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); if (cookie.Count == 0) { request.CookieContainer = new CookieContainer(); cookie = request.CookieContainer; } else { request.CookieContainer = cookie; } request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = postDataStr.Length; Stream myRequestStream = request.GetRequestStream(); StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312")); myStreamWriter.Write(postDataStr); myStreamWriter.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string retString= myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); return retString; } #endregion #region 同步通过GET方式发送数据 /// <summary> /// 通过GET方式发送数据 /// </summary> /// <param name="Url">url</param> /// <param name="postDataStr">GET数据</param> /// <param name="cookie">GET容器</param> /// <returns></returns> public string SendDataByGET(string Url, string postDataStr, ref CookieContainer cookie) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url +( postDataStr == "" ? "" : "?") + postDataStr); if (cookie.Count == 0) { request.CookieContainer = new CookieContainer(); cookie = request.CookieContainer; } else { request.CookieContainer = cookie; } request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); return retString; } #endregion 操作代码 CookieContainer cc=new CookieContainer(); cc.Add(new System.Uri("http://www.baidu.com "), new Cookie("PHPSESSID", "xx")); string content = web.SendDataByGET("http://www.baidu.com/xx/yy.php","","gbk",ref cc); MessageBox.Show(content);
相关文章推荐
- C#带cookie Post和Get方式发送数据,保持cookie
- C#模拟Post和Get方式发送数据 保持COOKIE
- C#带cookie Post和Get方式发送数据
- C#模拟Post和Get方式发送数据
- C#模拟Post和Get方式发送数据
- c#中 put方式发送Json数据、post方式、delete方式、get方式、
- C#模拟Post和Get方式发送数据的技巧
- C#模拟Post和Get方式发送数据的技巧
- C#模拟Post和Get方式发送数据
- C#模拟Post和Get方式发送数据
- C#模拟Post和Get方式发送数据的技巧
- 浅谈使用Fiddler工具发送post请求(带有json数据)以及get请求(Header方式传参)
- Android使用HttpClient以Post、Get请求服务器发送数据的方式(普通和json)
- Android使用HttpClient以Post、Get请求服务器发送数据的方式(普通和json)
- HTTP 请求方式: GET和POST的比较当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。
- get/post的方式发送数据到指定的http接口
- 通过ajax引擎对象向服务器发送数据的2中方式:get、post
- python requests 自动管理 cookie 。 get后进行post发送数据---》最简单的刷票
- HttpURLConnection方式、HttpClient方式发送get、post数据给服务端
- express 4.x req.query(get方式) req.body(post方式) 接收浏览器发送过来的数据