WebRequest是操作WEB请求的抽象象,它作为所有WEB请求的基类,主要由FileWebRequest、FtpWebRequest、HttpWebRequest这三个类进行实现。(选自MSDN)今天主要说一下
HttpWebRequest,从名字上看,他肯定是用来操作HTTP请求的,没错,正是如此。
标头 |
设置方 |
---|---|
Accept |
由 Accept 属性设置。 |
Connection |
由 Connection 属性和 KeepAlive 属性设置。 |
Content-Length |
由 ContentLength 属性设置。 |
Content-Type |
由 ContentType 属性设置。 |
Expect |
由 Expect 属性设置。 |
Date |
由系统设置为当前日期。 |
Host |
由系统设置为当前主机信息。 |
If-Modified-Since |
由 IfModifiedSince 属性设置。 |
Range |
由 AddRange 方法设置。 |
Referer |
由 Referer 属性设置。 |
Transfer-Encoding |
由 TransferEncoding 属性设置(SendChunked 属性必须为 true)。 |
User-Agent |
由 UserAgent 属性设置。 |
一个小例子,从网上下载图片,到本地,并进行保存。
代码如下:
Uri downUri = new Uri(@"http://img1.c2cedu.com/image/new/images/freebg.png");
//建立一个WEB请求,返回HttpWebRequest对象
HttpWebRequest hwr = (HttpWebRequest)WebRequest.Create(downUri);
//设置接收对象的范围为0-10000000字节。
hwr.AddRange(0, 10000000);
//流对象使用完后自动关闭
using (Stream stream = hwr.GetResponse().GetResponseStream())
{
//文件流,流信息读到文件流中,读完关闭
using (FileStream fs = File.Create(@"c:\gif.png"))
{
//建立字节组,并设置它的大小是多少字节
byte[] bytes = new byte[102400];
int n = 1;
while (n > 0)
{
//一次从流中读多少字节,并把值赋给N,当读完后,N为0,并退出循环
n = stream.Read(bytes, 0, 10240);
fs.Write(bytes, 0, n); //将指定字节的流信息写入文件流中
}
}
}
从上面的例子,我们可以看到HttpWebRequest操作流程是,建立链接,客户端请求,服务端响应,关闭链接四步。
本文转自博客园张占岭(仓储大叔)的博客,原文链接:WebRequest之HttpWebRequest实现服务器上文件的下载(一),如需转载请自行联系原博主。