C#带cookie Post和Get方式发送数据,保持cookie

在实际编程中,可能需要读取特定网页的信息,但很多网站需要用户登录后,才能够获取相关的页面内容,这就需要编程者先临时存储当前的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);

				
时间: 2024-10-24 18:07:56

C#带cookie Post和Get方式发送数据,保持cookie的相关文章

用 AFNetworking 通过 POST 方式发送数据

用 AFNetworking 通过 POST 方式发送数据BY 子非鱼 · 2014 年 5 月 26 日 AFNetworking进行POST请求中 发送json数据有些特别 .AFNetworking 版本为 2.0.2POST 发送数据有两种形式:1.发送纯文本的内容2.发送的 body 部分带有文件(图片,音频或者其他二进制数据)对应的 Content-Type 有两种:1.application/x-www-form-urlencoded2.multipart/form-data传统的

UDP学习3(通过键盘录入方式发送数据demo)

1 import java.net.*; 2 import java.io.*; 3 class UDPSDemo 4 { 5 public static void main(String[]args) throws Exception 6 { 7 //创建发送端socket服务 8 DatagramSocket ds=new DatagramSocket(); 9 //准备发送的数据包 10 BufferedReader br=new BufferedReader(new InputStrea

Java使用UDP发送数据到InfluxDB

最近在做压测引擎相关的开发,需要将聚合数据发送到InfluxDB保存以便实时分析和控制QPS. 下面介绍对InfluxDB的使用. 什么是InfluxDB InfluxDB是一款用Go语言编写的开源分布式时序.事件和指标数据库,无需外部依赖.该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics, loT传感器数据和实时分析数据. InfluxDB特征: 无结构(无模式):可以是任意数量的列(tags). 可以设置metric的保存时间. 支持与时间有关的相

在WebClient中使用post[发送数据]

很多时候,我们需要使用C#中的WebClient 来收发数据,WebClient 类提供向 URI 标识的任何本地.Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法. 下面先说说WebClient 最主要的功能.     WebClient 构造函数 .Ctor 包括 一个空构造函数 和一个静态构造函数, 静态构造函数主要为UrlEncode 和UrlEncodeAndWirte 编码提供参照byte[]数据的初始化作用. stati WebClient()

volley框架下发送和读取cookie

我们平时开发android应用都需要用到网络技术,通常采用http协议来发起请求并接受网络数据.android系统提供两种方式进行http通信:HttpURLConnection和HttpClient.不过这两种方式稍复杂,如果不适当封装回到子汉许多重复代码.因此android网络通信框架应运而生,如AsynHttpClient(把Http所有的通信细节全封装在内,只需几行代码就可以完成通信),Universal_Image_loader(使界面上显示网络图片的操作变得极其简单,开发者不用关心如

C# Post Get 方式发送请求

httpPost 方式发送请求 不带参数 1 /// <summary> 2 /// 没有参数的post请求 3 /// </summary> 4 public void HttpPostNoParam() 5 { 6 string Url = "请求地址"; 7 HttpWebRequest request = WebRequest.CreateHttp(Url); 8 request.Method = "POST"; 9 request.

Android发送数据到web服务器4种方式

/** * Android中向web服务器提交数据的两种方式四种方法 */ public class SubmitDataByHttpClientAndOrdinaryWay { /** * 使用get请求以普通方式提交数据 * @param map 传递进来的数据,以map的形式进行了封装 * @param path 要求服务器servlet的地址 * @return 返回的boolean类型的参数 * @throws Exception */ public Boolean submitDat

Cookie常用的优化方式

我们知道,对于每一个http请求,无论是动态的网页aspx,还是jsp,还是/user/add这种MVC模式的URL,还是CSS或者JS文件,每一个http请求都会带着在硬盘上存有的跟这个域相关存有的cookie信息.越来越多的cookie导致请求头越来越大.那么应该如何去优化呢? cookie存储在客户端,伴随着HTTP请求在浏览器和服务器之间传递.除了key-value外,cookie还有max-age,path,domain和httponly属性. httponly属性标识一个客户端Jav

浏览器本地储存方式有哪些?cookie、localStorage、sessionStorage

现阶段,浏览器提供的储存方式常用的有三种,cookie.localStorage.sessionStorage 1.cookie 概念:cookie 是浏览器中用于保存少量信息的一个对象 基本特征: 1)以域名为单位的,每个网站的cookie都保存在此网站的域名下,当下一次访问该网站的时候,就可以通过cookie访问保存的消息 2)每个浏览器保存cookie的位置不同,都保存在浏览器内部,可以通过相应的操作查看 3)每个浏览器保存cookie的数量限制不同,一般每个网站下不大于50个,不大于4k