首页 >> 读书频道 >> 电脑 >> 网上下载和上传数据(二)
 
· 图片上传的WebForm
· 图片上传的功能简介及we
· ASP.NET追捕休整版
· 使用net classe
· 用asp.net画饼图(
· ASP.NET中树形图的
· 在DataSet中建立外
· ASP.NET读取POP
· ASP.NET窗体对话框
· 用ASP.Net写一个发
· 用ASP.NET实现一个
· DotNet语音技术实现
 
· 加油金顺剧情分集介绍完整
· 红楼梦:120回全本[清
· 素质教育在美国
· 全唐诗卷四十六
· 韩剧《布拉格恋人》剧情介
· 夜航船[作者:明·张岱]
· 局外人[作者:韩·可爱淘
· 现场流行病学
· 源氏物语[日本:紫式部]
· 武林寓言故事
· 2006高考录取规则
· 首批中国世界名牌产品和2
 
· (出租)中动商场部分及写
· (出租)中动动漫基地&#
· 喜剧学院
· 《善德女王》剧情介绍
· 魔女18号 剧情
· 丑女无敌剧情介绍
· 魔女幼熙剧情介绍
· 龙游天下剧情介绍
· 震撼世界的七日剧情介绍
· 静静的白桦林剧情介绍
· 心情日记—老公今天我想对
· 旗舰剧情介绍
欢迎来到月影社区!如果您觉得这里不错,请推荐给您的朋友们。月影社区:http://wf66.com/

网上下载和上传数据(二)


查看有无更新版本

关键字:ASP.NET 2006-8-31

 

上一次介绍了WebClient的一些下载和上传数据的方法,今天着重看一下WebRequest 和 WebResponse两种我们访问Internet常用的类,严格说,WebRequest是一个抽象基类,我们一般用它的衍生类HttpWebRequest 以及 FileWebRequest,FTP的访问需要手动注册,具体看后面的插入协议。
从逻辑角度上讲,Net classes 包含三个层:请求/响应层、应用协议层和传输层,依次展开,从应用程序到网络。WebRequest 和 WebResponse 类代表请求/响应层。HTTP、TCP 和 UDP 类组成了应用协议层,而套接字存在于传输层中。WebRequest/WebResponse 和 HTTP 可以在 System.Net 名称空间中找到,而 TCP/UDP 和套接字则处在 System.Net.Sockets 名称空间中,包括也常用的UDPClient、TCPCLient。
WebRequest 和 WebResponse(请求/响应模型)
请求/响应模型位于顶部,提供一种简单的方式访问 Web 上的资源。WebRequest 是 .NET 框架的用于访问 Internet 数据的请求/响应模型的抽象基类。使用该请求/响应模型的应用程序可以用协议不可知的方式从 Internet 请求数据,什么意思?就是协议不具体。
这两种类提供了一种访问网上资源的一般方式。WebRequest 表示一个网络请求,包含诸如 RequestURI、Headers、Credentials 和 ContentType 等属性。WebRequest 上的主要方法有 GetRequestStream、GetResponse 以及它们的异步方法Begin/EndGetRequestStream 和 Begin/EndGetResponse。 GetRequestStream 用于获取流以便将数据上载到服务器。GetResponse 用于获取服务器返回的响应对象。WebResponse 表示从处理该请求的服务器接收回的响应。其关键属性有 ContentLength、ContentType、headers、ResponseURI 和 Status。WebResponse 上最常用的方法是 GetResponseStream,它用于从服务器读取(下载)数据。
当对 WebRequest.GetResponse 进行调用时,通常发出实际的网络请求。
这个示例显示如何获取一个 Web 页并将其内容输出:
Dim url As New Uri("http://www.yahoo.com") ‘定义一个URI
Dim Req As WebRequest
Req = WebRequest.Create(url)
Dim Resp As WebResponse
Try
Resp = Req.GetResponse ‘获得一个响应
Catch exc As Exception
MsgBox(exc.Message)
End Try
Dim netStream As StreamReader
netStream = New StreamReader(Resp.GetResponseStream)
Debug.WriteLine(netStream.ReadToEnd)
当然,上面的例子只是一个简单的操作,可以返回一个流式的数据。下面充分挖掘一下它们的优势(与WebClient相比)。
可插入协议
当某个应用程序仅仅使用 WebRequest 和 WebResponse 类时,无需修改应用程序的任何代码就可以“插入”和使用新的协议。注册一个带 WebRequestFactory 的 URI 模式在程序的持续时间内插入协议支持。注册是通过调用 WebRequestFactory.Register() 方法完成的。对于 HTTP 协议,这种方法是从内部调用的,因此它被默认注册;尽管如此,在将来可以实现和注册任意数目的其他协议。当然,由于 Internet 上的协议数量巨大,这种模型并不是对所有的情况都理想。那些“饶舌”的或另外排斥请求/响应模型的协议可能会在 TCP 或 UDP 类中更好地执行,或者在某些情况下会在 Sockets 类中更好地执行。有关HTTP方面的操作我们可以使用HttpWebRequest。
下面说明几个具体问题:
1. 程序分块
当应用程序需要发送或接收数据,而数据的准确大小在下载/上载开始时还未知时,程序分块是有用的。当基于其他应用程序或服务器逻辑正在创建所讨论的数据时,使用程序分块技术是最普遍的。要发送分块的数据,应该将 WebRequest 转换为 HttpWebRequest 并且将 HttpWebRequest.SendChunked 的属性设置为TRUE。如果直接用HttpWebRequest自然就免了:)
2.HTTP 管道技术
管道技术是 HTTP 1.1 的一项功能,它允许 Net classes 通过持久性连接向后端服务器发送多个 HTTP 请求,而无需在发出下次请求之前等待来自服务器的响应。这会显著影响性能,因为从服务器请求多个资源的应用程序不会被阻塞而等待某个特定资源(可能是服务器上一个非常耗时的操作,如数据库查找)。
3. 身份验证
Net classes 支持各种客户机身份验证机制,包括“摘要”、“基本”、Kerberos、NTLM 和“定制”。身份验证是通过在作出请求前对 WebRequest.Credentials 对象进行设置来达到的。在“摘要”和“基本”情况下,会指定用户名和口令。对于 NTLM 或 Kerberos,则使用 Windows 安全机制,并且 Credential 对象或者可以被设置为用户名、口令和域的结合,或者可以请求使用系统默认值。
4.代理支持
在 Net classes 中的 HTTP 代理支持可以在每个请求的基础上进行控制,或者可以一次全局性地设置它,用于应用程序的生存期。这样似乎就可以验证Proxy是不是免费;)

网上下载和上传数据(二)

[ 1 ]
网上下载和上传数据(二) num

打印本页 关闭

关于我们版权声明本站导航友情连结作品演示 TOP↑