WebRequest、WebResponse的使用示例
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的使用示例相关推荐
- 一步一步学Silverlight 2系列(13):数据与通信之WebRequest
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- NET 进阶--WebClient和WebRequest
文章目录 WebClient WebRequest WebResponse WebClient WebClient类位于System.Net命名空间下,WebClient类提供向URI标识的任何本地. ...
- C#动态调用webservice
最近项目需要调用对方java写的webservice接口 调用示例: //接收结果 XmlNode xmlNode1;string strSenddata = "";//这个是要发 ...
- WEB API系列(一):WEB API的适用场景、第一个实例
在我前一篇博客<WebAPI前置知识:HTTP与RestfulAPI>中已经给各位简单介绍了HTTP协议与RestFul API的关系,以及一些基本的HTTP协议知识,在这些知识的铺垫下, ...
- web APIS
WEB API系列: 很多人都很迷惑,既然有了WCF为什么还要有WEB API?WEB API会不会取代WCF? 就我的看法,WCF提供的是一种RPC实现的集合,WCF的设计更多地考虑了SOA的场景, ...
- (16):Silverlight 2 数据与通信之JSON
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- 《果壳中的C# C# 5.0 权威指南》 (09-26章) - 学习笔记
<果壳中的C# C# 5.0 权威指南> ========== ========== ========== [作者] (美) Joseph Albahari (美) Ben Albahar ...
- 16.网络《果壳中的c#》
16.1 网络体系结构 System.Net.* 命名空间包含各种支持标准网络协议的通信. WebClient 外观类:支持通信HTTP或FTP执行简单的下载/上传操作. WebRequest 和 W ...
- ASP.NET抓取其他网页代码
在.Net 平台下,创建一个ASP.Net的程序 1.引用两个NAMESPACE using System.Text //因为用了Encoding类 using Sys ...
最新文章
- 大工18秋《计算机网络技术》在线作业1,大工18秋《专业英语(计算机英语)》在线作业3【标准答案】...
- 题目1185:特殊排序
- linux 基本脚本编写
- 联想android刷机教程视频,联想s939刷机教程(刷官方系统)
- 你还在问android横竖屏切换的生命周期?
- 【python】numpy数组的维度增减方法
- Unity3D使用经验总结 编辑器扩展篇【转】
- 安谋中国发布“玲珑”多媒体产品线,首款ISP处理器面世
- SAI绘制小树基础教程
- Adams安装出错的一种情况
- java sql in语句,sql语句In查询的好
- 功能测试转测试开发的正确姿势
- canvas绘制飞线效果
- flash ActionScript快速入门(全部章节)
- 长安大学转计算机专业,长安大学本科学生转换专业管理办法
- 细讲如何对NFA确定化和最小化
- 获取拉勾网招聘信息数据
- 用户显示图片的服务器是什么,显示服务器上的图片怎么写
- 2022国产PLM软件排行榜
- Android Maps