1. 在实际编程中,可能需要读取特定网页的信息,但很多网站需要用户登录后,才能够获取相关的页面内容,这就需要编程者先临时存储当前的cookie
    C#中可以使用CookieContainer 对象来保存登录后的Cookie信息,这样,在每次发送数据的时候,附加上Cookie信息,就可以了。
  1. #region 同步通过POST方式发送数据
  2. /// <summary>
  3. /// 通过POST方式发送数据
  4. /// </summary>
  5. /// <param name="Url">url</param>
  6. /// <param name="postDataStr">Post数据</param>
  7. /// <param name="cookie">Cookie容器</param>
  8. /// <returns></returns>
  9. public string SendDataByPost(string Url,string postDataStr,ref CookieContainer cookie)
  10. {
  11. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
  12. if (cookie.Count == )
  13. {
  14. request.CookieContainer = new CookieContainer();
  15. cookie = request.CookieContainer;
  16. }
  17. else
  18. {
  19. request.CookieContainer = cookie;
  20. }
  21.  
  22. request.Method = "POST";
  23. request.ContentType = "application/x-www-form-urlencoded";
  24. request.ContentLength = postDataStr.Length;
  25. Stream myRequestStream = request.GetRequestStream();
  26. StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
  27. myStreamWriter.Write(postDataStr);
  28. myStreamWriter.Close();
  29.  
  30. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  31. Stream myResponseStream = response.GetResponseStream();
  32. StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
  33. string retString= myStreamReader.ReadToEnd();
  34. myStreamReader.Close();
  35. myResponseStream.Close();
  36.  
  37. return retString;
  38. }
  39. #endregion
  40.  
  41. #region 同步通过GET方式发送数据
  42. /// <summary>
  43. /// 通过GET方式发送数据
  44. /// </summary>
  45. /// <param name="Url">url</param>
  46. /// <param name="postDataStr">GET数据</param>
  47. /// <param name="cookie">GET容器</param>
  48. /// <returns></returns>
  49. public string SendDataByGET(string Url, string postDataStr, ref CookieContainer cookie)
  50. {
  51. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url +( postDataStr == "" ? "" : "?") + postDataStr);
  52. if (cookie.Count == )
  53. {
  54. request.CookieContainer = new CookieContainer();
  55. cookie = request.CookieContainer;
  56. }
  57. else
  58. {
  59. request.CookieContainer = cookie;
  60. }
  61.  
  62. request.Method = "GET";
  63. request.ContentType = "text/html;charset=UTF-8";
  64.  
  65. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  66. Stream myResponseStream = response.GetResponseStream();
  67. StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
  68. string retString = myStreamReader.ReadToEnd();
  69. myStreamReader.Close();
  70. myResponseStream.Close();
  71.  
  72. return retString;
  73. }
  74. #endregion
  75.  
  76. 操作代码
  77.  
  78. CookieContainer cc=new CookieContainer();
  79. cc.Add(new System.Uri("http://www.baidu.com "), new Cookie("PHPSESSID", "xx"));
  80. string content = web.SendDataByGET("http://www.baidu.com/xx/yy.php","","gbk",ref cc);
  81. MessageBox.Show(content);
  1.  
  1.  

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

  1. Django进阶(路由系统、中间件、缓存、Cookie和Session、Ajax发送数据

    路由系统 1.每个路由规则对应一个view中的函数 url(r'^index/(\d*)', views.index), url(r'^manage/(?P<name>\w*)/(?P&l ...

  2. Ajax使用post方式发送数据注意事项

    Ajax使用post方式给服务器传递数据时,需要将传递的字符串转化为模拟from表单发送数据的XML格式 在open之后奢姿头协议信息,模拟from表单传递数据 xhr.setRequestHeade ...

  3. rest接口webservice接口利用http请求方式发送数据

    所需依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>h ...

  4. Django-多对多关系的三种创建方式-forms组件使用-cookie与session-08

    目录 表模型类多对多关系的三种创建方式 django forms 组件 登录功能手写推理过程 整段代码可以放过来 forms 组件使用 forms 后端定义规则并校验结果 forms 前端渲染标签组件 ...

  5. Java使用UDP发送数据到InfluxDB

    最近在做压测引擎相关的开发,需要将聚合数据发送到InfluxDB保存以便实时分析和控制QPS. 下面介绍对InfluxDB的使用. 什么是InfluxDB InfluxDB是一款用Go语言编写的开源分 ...

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

    很多时候,我们需要使用C#中的WebClient 来收发数据,WebClient 类提供向 URI 标识的任何本地.Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法 ...

  7. C#中在WebClient中使用post发送数据实现方法

    很多时候,我们需要使用C#中的WebClient 来收发数据,WebClient 类提供向 URI 标识的任何本地.Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法 ...

  8. WebClient以POST方式发送Web请求

    本例使用WebClient以POST方式发送Web请求并下载一个文件,难点是postData的构造,发送Web请求时有的网站要求可能要求 Cookies前后一致.其中application/x-www ...

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

    1./** 2. * Android中向web服务器提交数据的两种方式四种方法 3. */ 4.public class SubmitDataByHttpClientAndOrdinaryWay { ...

随机推荐

  1. Telegram传奇:俄罗斯富豪、黑客高手、极权和阴谋…

    说了很久要写Telegram的故事,一直拖延没有写.在我拖延的这段时间里面,Telegarm继续快速增长,前几天,在旧金山的TechCrunch Disrupt活动上,创始人Durov说现在Teleg ...

  2. RHEL7软件包管理

    本文介绍RHEL7的软件包管理 RHEL7下主要有RPM和YUM这两种包管理: YUM使用简单但需要联网,YUM会去网上的YUM包源去获取所需要的软件包并获取该包依赖的其他包 RPM的需要的操作精度比 ...

  3. .NET破解之100%营销QQ辅助软件【更新】

    应网友要求,更新一个以前的版本,效果如下: 更改方法 修改一:更改对象的可访问性 Assembly: RWXComLibrary, Version=2.1.0.3 Name: RWXComLibrar ...

  4. How does Web Analytics works under sharePoint 2010

    [http://gokanx.wordpress.com/2013/06/15/how-does-web-analytics-works-under-sharepoint-2010/] You nee ...

  5. 安卓开发-See the log file\.metadata\.log.

    今天在给安卓项目res-valus-string.xml 中字符串修改的时候,突然eclipse卡住了 然后任务管理器关掉之后,重新打开 显示一个错误 百度了一下 eclipse启动报错,让查看.me ...

  6. IOS字典NSDictionary与NSMutableDictionary知识点

    字典中的元素是以键值对的形式存储的,键值对的键和值,都是任意的对象,但是键往往使用字符串,字典存储对象的地址没有顺序,字典的遍历分为:键的遍历和值的遍历,字典与数组的区别:数组讲究顺序,而字典可以快速 ...

  7. C++语言-03-类与对象

    类 类是面向对象编程中的核心概念,用于定义一个数据类型的蓝图,描述类的对象包括什么,以及可以在这些对象上执行那些操作. 类的成员 数据成员 描述数据的表示方法 class ClassName { ac ...

  8. Markdown使用Demo

    论脚臭的重要性 军总远离球场,下半年的海波桥将何去何从? 1.赵总对团岛的贡献是有目共睹的 2.呕心沥血刚 超链接 这是一张图片链接 这是引用自Yellow Shit的一句话:领导nice! 今天天气 ...

  9. 修复 Java 内存模型,第 2 部分——Brian Goetz

    转自Java并发大师Brain Goetz:http://www.ibm.com/developerworks/cn/java/j-jtp03304/ (中文地址) http://www.ibm.co ...

  10. PHP模拟发送POST请求之二、用PHP和JS处理URL信息

    明白了HTTP请求的头信息后,我们还需要对请求地址有所了解.再者,HTTP GET请求是靠URL实现的,所以了解URL的构造,处理URL的重要性不言而喻. 在PHP中我们用parse_url()函数来 ...