C# ASP.NET 使用HttpWebRequest模拟下载文件到本地:示例与代码
在C# ASP.NET中,当需要模拟浏览器请求下载文件到本地时,可以利用`HttpWebRequest`类来实现这一功能。以下代码片段展示了如何完成这个过程: 首先,定义一个名为`DownloadFile`的静态方法,该方法接受两个参数:`downLoadUrl`(待下载文件的URL)和`saveFullName`(目标保存路径)。方法的主体开始于创建一个`HttpWebRequest`对象,并设置其相关属性以模拟浏览器请求。 1. 使用`Create`方法创建`HttpWebRequest`对象,传入下载URL: ```csharp System.Net.HttpWebRequest httpWebRequest = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(downLoadUrl); ``` 2. 设置保持连接(KeepAlive)以提高性能,减少建立新连接的开销: ```csharp httpWebRequest.KeepAlive = true; ``` 3. 设置HTTP版本为1.1: ```csharp httpWebRequest.ProtocolVersion = HttpVersion.Version11; ``` 4. 指定请求方法为GET,这是下载文件常用的方法: ```csharp httpWebRequest.Method = "GET"; ``` 5. 设置HTTP头信息,包括通用的用户代理字符串(User-Agent),以便识别浏览器类型: ```csharp httpWebRequest.Accept = "*/*"; httpWebRequest.UserAgent = "Mozilla/5.0(Windows NT 6.1)AppleWebKit/536.5(KHTML, like Gecko)Chrome/19.0.1084.56 Safari/536.5"; httpWebRequest.Referer = downLoadUrl; ``` 6. 将`httpWebRequest`发送并获取响应: ```csharp System.Net.HttpWebResponse httpWebResponse = (System.Net.HttpWebResponse)httpWebRequest.GetResponse(); ``` 7. 接下来,检查响应状态码以确保下载成功: ```csharp // 检查状态码,例如200表示成功 if (httpWebResponse.StatusCode == HttpStatusCode.OK) { flagDown = true; } ``` 8. 如果下载成功(`flagDown`为`true`),则继续下载文件内容到本地: ```csharp using (var stream = httpWebResponse.GetResponseStream()) { using (FileStream fs = new FileStream(saveFullName, FileMode.Create)) { byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0) { fs.Write(buffer, 0, bytesRead); } } } ``` 9. 关闭响应: ```csharp httpWebResponse.Close(); ``` 10. 最后,返回下载状态: ```csharp return flagDown; ``` 这段代码通过设置合理的请求头信息,模拟浏览器行为下载文件,确保了请求的正确性和兼容性。在实际应用中,可能还需要处理异常情况以及优化请求头信息,以适应不同网站的下载策略。
string fileUrl = "http://www.xxx.com/1.pptx";
Utility.DownloadFile(fileUrl, @"E:\1.pptx");
Response.Write("下载成功!");
return;
-----------------------方法:
#region 从URL地址下载文件到本地磁盘
/// <summary>
/// 从URL地址下载文件到本地磁盘
/// </summary>
/// <param name="downLoadUrl">文件的url路径</param>
/// <param name="saveFullName">需要保存在本地的全路径(包含文件名)</param>
/// <returns></returns>
public static bool DownloadFile(string downLoadUrl, string saveFullName)
{
bool flagDown = false;
System.Net.HttpWebRequest httpWebRequest = null;
try
{
//根据url获取远程文件流
httpWebRequest = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(downLoadUrl);
#region 模拟浏览器请求------------必须!!!
httpWebRequest.KeepAlive = true;
httpWebRequest.ProtocolVersion = HttpVersion.Version11;
下载后可阅读完整内容,剩余2页未读,立即下载
- 粉丝: 32
- 资源: 31
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展