通过应用程序读取网页信息的时候,通常需要抓取网页的数据,但是有一个问题就是很多网页需要登录后才能够获得页面数据,那么就需要保存当前的cookie,在.NET中可以使用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

转载于:https://www.cnblogs.com/fesbruce/archive/2010/04/08/1707118.html

post 和 get 网站相关推荐

  1. Docsify个人网站搭建详细教程

    目录 一.什么是 docsify 二.安装 docsify 三.多页文档设置 四.定制化配置 4.1.侧边栏 4.2.导航栏 4.3.封面 4.4.主题 五.部署 5.1.部署到Gitee 5.2.部 ...

  2. 用gogs搭建属于自己的git网站

    如果你对docker的操作不太了解, 建议先阅读 从零搭建docker私有仓库 gogs是一款极易搭建的自助 Git 服务, 掌握了它, 我们就可以搭建自己的git服务站点 gogs官网: https ...

  3. 网站项目必备——12款白富美型 jQuery 图片轮播插件

    转自:http://www.cnblogs.com/lhb25/archive/2013/01/06/jquery-image-carousel-effect.html 图片轮播是网站中的常用功能,用 ...

  4. .net2.0网站多语言

    asp.net 2.0中的App_GlobalResources可以用来解决本地化的问题,程序会根据浏览器的语言首选项自动判断显示出本地化的界面. 首先在App_GlobalResources新建re ...

  5. 为什么很多网站的验证码都设置得肉眼都很难识别?

    欢迎访问网易云社区,了解更多网易技术产品运营经验. 首先来谈谈验证码的机制,验证码作为一种人机识别手段,其终极目的,就是区分正常人和机器的操作.而对于没有验证码的场景,比如用户登陆,则机器可以同时.大 ...

  6. php防止网站被镜像,网站被等恶意镜像的解决、反制措施详细教程

    前天在百度搜索王柏元的博客网站关键词时,猛地在百度结果的第一页中发现了一个标题.简介和我完全一样的网站,不看不知道,这个网站还不是传统意义上的抄袭.盗链,不仅仅把我的网站全部照搬,而且把网页里所有的链 ...

  7. 视频 网站 页面开关灯实现方法

    在甲骨文学习 已经进行了四分之一了,  关于web 的学习基本结束了, 在项目展示的时候遇到了 视频网站开关灯的问题, 其实问题的根本就是 做两个div,  然后开灯的时候隐藏一个 关灯的时候 隐藏另 ...

  8. 从零开始用 Flask 搭建一个网站(二)

    从零开始用 Flask 搭建一个网站(一) 介绍了如何搭建 Python 环境,以及 Flask 应用基本项目结构.我们要搭建的网站是管理第三方集成的控制台,类似于 Slack. 本篇主要讲解数据如何 ...

  9. 第20章 使用LNMP架构部署动态网站环境

    章节概述: 本章节将从Linux系统的软件安装方式讲起,带领读者分辨RPM软件包与源码安装的区别.并能够理解它们的优缺点. Nginx是一款相当优秀的用于部署动态网站的服务程序,Nginx具有不错的稳 ...

  10. 网站压力测试工具webbench

    webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便. 1.适用系统:Linux 2.编译安装: 引用 wget htt ...

最新文章

  1. Kanzi常用操作1
  2. 为什么Android变得对商业世界至关重要?
  3. 经典KMP算法C++与Java实现代码
  4. Android移动端音视频的快速开发教程(五)
  5. nvml.dll 英伟达公司提供的动态库用途
  6. windows之如何刷新电脑DNS缓存
  7. IT综合管理 新时期的运维管理思路
  8. Session 'app': Installation did not succeed.The application could not be installed: INSTALL FAILED I
  9. 穷小子做网站赚钱终得丈母娘认可
  10. linux元组和列表的区别,列表,元组,集合
  11. (bfs)广度优先 实现图的遍历
  12. JavaScript打开窗口
  13. 深度剖析JAVA软件工程师
  14. spring cloud 解决问题
  15. APP闪退有哪些原因造成的?
  16. 云计算实战应用案例精讲-【深度学习】多模态融合(论文篇四)
  17. 滤波器原理及其作用计算机网络,什么是滤波器?滤波器原理及其作用是什么?...
  18. 3DMax的中文版官方手册
  19. 蒙纳丽莎的微笑系列 广告软文:“效益之源”(转载自:中国灯饰商贸网)
  20. 轻松实现即席查询,Smartbi满足用户多样分析需求

热门文章

  1. JQuery时间轴timeline插件的学习-Lateral On-Scroll Sliding with jQuery+technotarek / timeliner
  2. Angular7教程-04-Angular常用操作(下)
  3. TestNg测试框架使用
  4. windows系统查看80端口被占用的程序并结束该程序运行
  5. 安卓开发中,什么样的功能适合抽取成 Library?
  6. oracle错误代码及解决办法整合
  7. linux使用小命令使用汇集
  8. 程序员被公司辞退12天,前领导要求回公司讲清楚代码,结果懵了
  9. 卸载 Navicat!事实已证明,正版客户端,它更牛逼……
  10. 为什么 Java 不支持类多重继承?