1.WebRequest和WebResponse

首先新建windows窗体应用程序,添加列表框,并将其docking属性设置为“DockStyle.Fill”,然后对主窗体的构造函数进行如下改动。

public Form1()
{InitializeComponent();WebRequest request = WebRequest.Create("http://www.baidu.com");WebResponse response = request.GetResponse();Stream strm = response.GetResponseStream();StreamReader sr = new StreamReader(strm);string line;while ((line = sr.ReadLine()) != null)listBox1.Items.Add(line);strm.Close();
}

WebRequest发送请求,WebResponse接受从服务器返回的数据。初始化WebRequest时调用静态函数Create(),并将地址作为参数。 通过函数GetResponse获取服务器对请求的响应。通过函数GetResponseStream()获取服务器返回的数据流。

运行结果

2. HttpWebRequest和HttpWebResponse

HttpWebRequest 和 HttpWebResponse分别是WebRequest、WebResponse的派生类,用以处理HTTP URL创建的请求及响应。这两个类可以访问HTTP协议的特定属性。

public Form1()
{InitializeComponent();WebRequest request = WebRequest.Create("http://www.baidu.com");HttpWebRequest httpRequest = (HttpWebRequest)request;listBox1.Items.Add("Tiemout = " + httpRequest.Timeout);listBox1.Items.Add("Keep Alive = " + httpRequest.KeepAlive);listBox1.Items.Add("AllowAutoRedirect = " + httpRequest.AllowAutoRedirect);
}

Timeout属性表示超时时间(默认为100000ms),属性KeepAlive表示是否保持连接(默认为True),属性AllowAutoRedirect表示请求是否跟随Web服务器的重定向响应(默认为True)。

运行结果

请求类和响应类以属性的形式提供了很多重要的信息,也可以通过Header提取信息。

public Form1()
{InitializeComponent();WebRequest request = WebRequest.Create("http://www.baidu.com");HttpWebRequest httpRequest = (HttpWebRequest)request;WebResponse response = request.GetResponse();WebHeaderCollection webHeader = response.Headers;for (int i = 0; i < webHeader.Count; i++){listBox1.Items.Add(string.Format("Header {0}:: {1}", webHeader.GetKey(i), webHeader[i]));}
}

运行结果

3.异步请求

向服务器发送请求到接收到服务器响应之间会有延迟,如果不希望程序处于等待状态,就应该使用异步方法。

函数BeginGetResponse()异步工作,并立即返回。在底层,运行库会异步管理一个后台线程,以从服务器上接收响应。

回调函数OnResponse的返回类型是void,参数是IAsyncResult。当后台线程收到响应后,就执行该回调函数。回调函数中可以使用EndGetResponse获取WebResponse对象。

public partial class Form1 : Form
{protected static void OnResponse(IAsyncResult ar){WebRequest request = (WebRequest)ar.AsyncState;WebResponse response = request.EndGetResponse(ar);// read response}public Form1(){InitializeComponent();WebRequest request = WebRequest.Create("http://www.baidu.com");request.BeginGetResponse(new AsyncCallback(OnResponse),request);}
}

WebRequest、WebResponse的使用示例相关推荐

  1. 一步一步学Silverlight 2系列(13):数据与通信之WebRequest

    概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

  2. NET 进阶--WebClient和WebRequest

    文章目录 WebClient WebRequest WebResponse WebClient WebClient类位于System.Net命名空间下,WebClient类提供向URI标识的任何本地. ...

  3. C#动态调用webservice

    最近项目需要调用对方java写的webservice接口 调用示例: //接收结果 XmlNode xmlNode1;string strSenddata = "";//这个是要发 ...

  4. WEB API系列(一):WEB API的适用场景、第一个实例

    在我前一篇博客<WebAPI前置知识:HTTP与RestfulAPI>中已经给各位简单介绍了HTTP协议与RestFul API的关系,以及一些基本的HTTP协议知识,在这些知识的铺垫下, ...

  5. web APIS

    WEB API系列: 很多人都很迷惑,既然有了WCF为什么还要有WEB API?WEB API会不会取代WCF? 就我的看法,WCF提供的是一种RPC实现的集合,WCF的设计更多地考虑了SOA的场景, ...

  6. (16):Silverlight 2 数据与通信之JSON

    概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

  7. 《果壳中的C# C# 5.0 权威指南》 (09-26章) - 学习笔记

    <果壳中的C# C# 5.0 权威指南> ========== ========== ========== [作者] (美) Joseph Albahari (美) Ben Albahar ...

  8. 16.网络《果壳中的c#》

    16.1 网络体系结构 System.Net.* 命名空间包含各种支持标准网络协议的通信. WebClient 外观类:支持通信HTTP或FTP执行简单的下载/上传操作. WebRequest 和 W ...

  9. ASP.NET抓取其他网页代码

    在.Net 平台下,创建一个ASP.Net的程序 1.引用两个NAMESPACE       using System.Text     //因为用了Encoding类       using Sys ...

最新文章

  1. 大工18秋《计算机网络技术》在线作业1,大工18秋《专业英语(计算机英语)》在线作业3【标准答案】...
  2. 题目1185:特殊排序
  3. linux 基本脚本编写
  4. 联想android刷机教程视频,联想s939刷机教程(刷官方系统)
  5. 你还在问android横竖屏切换的生命周期?
  6. 【python】numpy数组的维度增减方法
  7. Unity3D使用经验总结 编辑器扩展篇【转】
  8. 安谋中国发布“玲珑”多媒体产品线,首款ISP处理器面世
  9. SAI绘制小树基础教程
  10. Adams安装出错的一种情况
  11. java sql in语句,sql语句In查询的好
  12. 功能测试转测试开发的正确姿势
  13. canvas绘制飞线效果
  14. flash ActionScript快速入门(全部章节)
  15. 长安大学转计算机专业,长安大学本科学生转换专业管理办法
  16. 细讲如何对NFA确定化和最小化
  17. 获取拉勾网招聘信息数据
  18. 用户显示图片的服务器是什么,显示服务器上的图片怎么写
  19. 2022国产PLM软件排行榜
  20. Android Maps

热门文章

  1. git上传文件遇到 错误error: failed to push some refs to
  2. auc 和loss_如何理解机器学习和统计中的AUC?
  3. 基于 AHB 总线的 SRAM 控制器设计
  4. 无线路由器开服务器玩游戏,游戏路由和普通无线路由器有什么区别?
  5. GPS接收机(三)低噪放设计和版图仿真优化
  6. oracle查看表sql语句,oracle查看创造表的sql语句
  7. java 实现输出水仙花数
  8. 网口up不起来问题排查
  9. IPV6地址解析与DAD机制实验分析
  10. Halide学习笔记----Halide tutorial源码阅读5