C# ASP.NET 使用HttpWebRequest模拟下载文件到本地:示例与代码
4星 · 超过85%的资源 需积分: 42 181 浏览量
更新于2024-09-07
1
收藏 3KB TXT 举报
在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;
```
这段代码通过设置合理的请求头信息,模拟浏览器行为下载文件,确保了请求的正确性和兼容性。在实际应用中,可能还需要处理异常情况以及优化请求头信息,以适应不同网站的下载策略。
2012-08-07 上传
103 浏览量
2009-11-06 上传
2023-05-21 上传
169 浏览量
2020-10-27 上传
2021-10-10 上传
lth888
- 粉丝: 32
- 资源: 31
最新资源
- 【地产资料】XX地产 绩效方案P16.zip
- Excel模板财务收支表管理.zip
- FormularioProjeto
- ml-ops-quickstart:设置新机器学习存储库的工具
- activecore:基于“ MLIP核心”的硬件生成库(微体系结构可编程模板)
- dm-keisatsu:DM警察!
- karma-logcapture-reporter:用于捕获日志的 Karma 插件
- fontana_teachers
- 2014-2020年扬州大学830生态学考研真题
- 毕业设计&课设--毕业设计-语音识别系统-GUI-python.zip
- 网站:Adriaan Knapen的个人网站
- Ejerc-varios-java
- jquery-qrcode-demo:通过jquery-qrcode生成二维码,并解决中文乱码问题
- 【地产资料】经纪人工作量化与行程跟踪.zip
- alx-low_level_programming
- 基于小波神经网络的交通流预测代码_小波神经网络_交通流预测_matlab