当前位置: 首页 > news >正文

HttpWebResponse类

HttpWebResponse类的作用用于在客户端获取返回的响应的信息,还记得HttpResponse类吗?你是否在写B/S程序的时候,经常用到Response.Write()呢?

  HttpResponse用于在服务器端设置服务端的响应信息,而HttpWebResponse类用于客户端获取服务器端返回的响应信息。这个类还是比较简单,还是可以照着以前的MSDN全部写一遍。

一、属性

CharacterSet       获取响应的字符集。 
ContentEncoding     获取用于对响应体进行编码的方法。 
ContentLength      获取请求返回的内容的长度。 (重写 WebResponse..::.ContentLength。) 
ContentType       获取响应的内容类型。 (重写 WebResponse..::.ContentType。) 
Cookies           获取或设置与此响应关联的 Cookie。 
Headers          获取来自服务器的与此响应关联的标头。 (重写 WebResponse..::.Headers。) 
IsFromCache       获取一个 Boolean 值,该值指示此响应是否为从缓存中获取的。 (继承自 WebResponse。) 
IsMutuallyAuthenticated  获取一个 Boolean 值,该值指示客户端和服务器是否都已经过身份验证。 (重写 WebResponse..::.IsMutuallyAuthenticated。) 
LastModified       获取最后一次修改响应内容的日期和时间。 
Method          获取用于返回响应的方法。 
ProtocolVersion      获取响应中使用的 HTTP 协议的版本。 
ResponseUri       获取响应请求的 Internet 资源的 URI。 (重写 WebResponse..::.ResponseUri。) 
Server           获取发送响应的服务器的名称。 
StatusCode       获取响应的状态。 
StatusDescription    获取与响应一起返回的状态说明。

复制代码
static void Main(string[] args)
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.baidu.com");    //创建一个请求示例
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Console.WriteLine(response.CharacterSet);       //输出 utf-8
            Console.WriteLine(response.ContentEncoding);    //空
            Console.WriteLine(response.ContentLength);      //输出 10310
            Console.WriteLine(response.ContentType);        //输出 text/html charset=utf-8

            CookieCollection cc = response.Cookies;
            Console.WriteLine(cc.Count);        //输出 0
            
            WebHeaderCollection whc = response.Headers;
            Console.WriteLine(whc.Count);       //输出 9
            foreach (string h in whc.AllKeys)
            {
                Console.WriteLine(h.ToString() + " " + whc[h].ToString());      //输出所有的响应头信息
            }

            Console.WriteLine(response.IsFromCache);    //输出 false 该值指示响应是否从缓存获取的 
            Console.WriteLine(response.IsMutuallyAuthenticated); //输出 false 客户端和服务器端都已通过身份认证
            Console.WriteLine(response.LastModified);   //输出 2013-04-06 21:03:06 最后一次修改响应的时间和日期
            Console.WriteLine(response.Method);     //输出 Get 返回响应的方法
            Console.WriteLine(response.ProtocolVersion);    //输出 1.1 响应的HTTP协议的版本
            Console.WriteLine(response.ResponseUri);    //输出 http://www.baidu.com 响应请求的Interner资源的URI
            Console.WriteLine(response.Server); //输出 BWS/1.0 发送响应的服务器的名称
            Console.WriteLine(response.StatusCode);     //输出 OK 获取响应的状态,这个不是状态码,而是状态描述,为什么不是200呢,奇怪啊,测试了好几个网站都是OK,而不是200
            Console.WriteLine(response.StatusDescription);      //输出 OK 这个是状态描述,

            Console.ReadKey();
        }
复制代码

二、方法

Close         关闭响应流。 (重写 WebResponse..::.Close()()()。) 
CreateObjRef     创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (继承自 MarshalByRefObject。) 
Dispose         释放由 HttpWebResponse 使用的非托管资源,并可根据需要释放托管资源。 
GetLifetimeService   检索控制此实例的生存期策略的当前生存期服务对象。 (继承自 MarshalByRefObject。) 
GetObjectData    基础结构。 使用将目标对象序列化所需的数据填充 SerializationInfo。 (重写 WebResponse..::.GetObjectData(SerializationInfo, StreamingContext)。) 
GetResponseHeader   获取与响应一起返回的标头的内容。 
GetResponseStream   获取流,该流用于读取来自服务器的响应的体。 (重写 WebResponse..::.GetResponseStream()()()。) 
InitializeLifetimeService  获取控制此实例的生存期策略的生存期服务对象。 (继承自 MarshalByRefObject。)

复制代码
class Program
    {
        static void Main(string[] args)
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.baidu.com");    //创建一个请求示例
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            Console.WriteLine(response.GetResponseHeader("Content-Type"));  //输出 text/html;charset=utf-8
            Stream stream = response.GetResponseStream();   //获取响应的字符串流
            StreamReader sr = new StreamReader(stream); //创建一个stream读取流
            string html = sr.ReadToEnd();   //从头读到尾,放到字符串html李米
            Console.WriteLine(html);        //输出首页HTML代码
        
            Console.ReadKey();
        }
    }
复制代码

  基本就这么多东西了。

相关文章:

  • python 读取目录文件
  • 从30岁到35岁:为你的生命多积累一些厚度
  • 基于VLC的视频播放器
  • [HTTP]HTTP协议的状态码
  • 福州大学第十一届程序设计竞赛
  • Android sendToTarget
  • 模板特化疑问
  • perl文件操作
  • 数论 --- 费马小定理 + 快速幂 HDU 4704 Sum
  • 机器翻译漫谈
  • 产生一个长度为100的int数组,并向其中随机插入1-100,不能重复
  • 去掉默认输入框按下时的蓝色边框
  • 阅读第8,9,10章
  • XenDesktop7.6安装部署入门教程
  • 我的视频教学之路
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 4. 路由到控制器 - Laravel从零开始教程
  • Java的Interrupt与线程中断
  • Mybatis初体验
  • NSTimer学习笔记
  • SpringCloud集成分布式事务LCN (一)
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 解决iview多表头动态更改列元素发生的错误
  • 前端知识点整理(待续)
  • 如何进阶一名有竞争力的程序员?
  • 深入浅出Node.js
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 双管齐下,VMware的容器新战略
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​secrets --- 生成管理密码的安全随机数​
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (7)STL算法之交换赋值
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (差分)胡桃爱原石
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (转)Linux下编译安装log4cxx
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转载)Linux 多线程条件变量同步
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .Net MVC4 上传大文件,并保存表单
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NetCore 如何动态路由
  • .NET的微型Web框架 Nancy
  • /bin、/sbin、/usr/bin、/usr/sbin
  • []指针