WebRequest之HttpWebRequest实现服务器上文件的下载(一)

简介:

WebRequest是操作WEB请求的抽象象,它作为所有WEB请求的基类,主要由FileWebRequestFtpWebRequest、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实现服务器上文件的下载(一),如需转载请自行联系原博主。

目录
相关文章
|
2月前
Netty实战: HTTP文件列表服务器
Netty实战: HTTP文件列表服务器
23 0
|
2月前
|
存储 弹性计算 数据可视化
要将ECS中的文件直接传输到阿里云网盘与相册(
【2月更文挑战第31天】要将ECS中的文件直接传输到阿里云网盘与相册(
424 4
|
3月前
|
数据可视化 Shell Linux
shell+crontab+gitlab实现ecs服务器文件的web展示
本文通过把ecs服务器上的文件定时上传至gitlab,实现文件的页面可视化和修改历史。技术点:shell、crontab、gitlab。
54 3
|
2月前
|
缓存 网络协议 数据可视化
WinSCP下载安装并实现远程SSH本地服务器上传文件
WinSCP下载安装并实现远程SSH本地服务器上传文件
|
2月前
|
Linux 网络安全 Python
如何在服务器上运行python文件
如何在服务器上运行python文件
|
1天前
|
网络协议
​LabVIEW从另一个VI或通过VI服务器访问正在运行的可执行文件
​LabVIEW从另一个VI或通过VI服务器访问正在运行的可执行文件
|
4天前
|
安全 Linux 网络安全
Windows搭建Emby媒体库服务器,无公网IP远程访问本地影音文件
Windows搭建Emby媒体库服务器,无公网IP远程访问本地影音文件
15 0
|
9天前
|
Java
如何解决使用若依前后端分离打包部署到服务器上后主包无法找到从包中的文件的问题?如何在 Java 代码中访问 jar 包中的资源文件?
如何解决使用若依前后端分离打包部署到服务器上后主包无法找到从包中的文件的问题?如何在 Java 代码中访问 jar 包中的资源文件?
46 0
|
10天前
|
Apache 项目管理 数据安全/隐私保护
Windows安装TortoiseSVN客户端结合Cpolar实现公网提交文件到本地服务器
Windows安装TortoiseSVN客户端结合Cpolar实现公网提交文件到本地服务器
|
11天前
|
Apache 项目管理 数据安全/隐私保护
TortoiseSVN客户端如何安装配置并实现公网访问服务端提交文件到本地服务器
TortoiseSVN客户端如何安装配置并实现公网访问服务端提交文件到本地服务器