下面我来详细讲解如何用 HttpWebRequest 实现下载图片至本地:
1. HttpWebRequest 简介
HttpWebRequest 是 .NET Framework 提供的一个类,用于创建 HTTP 请求并与 Web 服务器进行通信。使用 HttpWebRequest 可以发送 GET、POST 和其他 HTTP 请求,在本例中,我们将使用 HttpWebRequest 发送 GET 请求从服务器下载图片。
2. 步骤
2.1 准备
在使用 HttpWebRequest 前,需要引入以下命名空间:
using System.Net;
using System.IO;
2.2 创建请求
创建 HttpWebRequest 需要使用 WebRequest.Create 方法,它可以接受一个 URL,返回一个 WebRequest 对象,被转换为 HttpWebRequest。
string url = "https://example.com/image.jpg";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
2.3 发送请求
在创建请求对象后,我们需要发送请求以获取服务器响应。为此,可以使用 GetResponse 方法,返回一个 HttpWebResponse 对象,在本例中即为一个图片流。
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream stream = response.GetResponseStream();
2.4 保存图片
在获取了响应流后,我们就可以使用 FileStream 来保存这张图片至本地。在 FileStream 构造函数中传入两个参数:第一个参数是一个文件路径,第二个参数是 FileMode.Create,意味着文件不存在时将创建一个新文件。最后需要记得关闭响应流以及文件流。
string imagePath = "C:\\Users\\username\\Downloads\\image.jpg";
using (FileStream fs = new FileStream(imagePath, FileMode.Create))
{
byte[] buffer = new byte[1024];
int count = 0;
while ((count = stream.Read(buffer, 0, buffer.Length)) > 0)
{
fs.Write(buffer, 0, count);
}
}
response.Close();
stream.Close();
3. 示例
下面我们将通过两个简单的示例来演示如何使用 HttpWebRequest 实现下载图片至本地。
3.1 下载单张图片
string url = "https://example.com/image.jpg";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream stream = response.GetResponseStream();
string imagePath = "C:\\Users\\username\\Downloads\\image.jpg";
using (FileStream fs = new FileStream(imagePath, FileMode.Create))
{
byte[] buffer = new byte[1024];
int count = 0;
while ((count = stream.Read(buffer, 0, buffer.Length)) > 0)
{
fs.Write(buffer, 0, count);
}
}
response.Close();
stream.Close();
3.2 下载多张图片
List<string> urls = new List<string>
{
"https://example.com/image1.jpg",
"https://example.com/image2.jpg",
"https://example.com/image3.jpg"
};
foreach (var url in urls)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream stream = response.GetResponseStream();
string imageName = Path.GetFileName(url);
string imagePath = "C:\\Users\\username\\Downloads\\" + imageName;
using (FileStream fs = new FileStream(imagePath, FileMode.Create))
{
byte[] buffer = new byte[1024];
int count = 0;
while ((count = stream.Read(buffer, 0, buffer.Length)) > 0)
{
fs.Write(buffer, 0, count);
}
}
response.Close();
stream.Close();
}
这样,我们就可以使用 HttpWebRequest 实现下载图片至本地。当然,如果需要进行更复杂的操作,可以进一步扩展代码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:HttpWebRequest实现下载图片至本地 - Python技术站