使用C# HttpClient库下载视频的异步示例程序

246 阅读1分钟
  1. 错误处理:  应该在发起请求和读取响应时添加适当的错误处理和异常处理,以确保程序在出现问题时能够 graceful 地处理。
  2. 使用using语句:  对于实现IDisposable接口的对象,最好使用using语句以确保资源被正确释放。HttpClient就是一个实现了IDisposable的类,最好在使用后将其释放。
  3. 异步主方法:  如果你的主方法允许异步操作,最好将其声明为async Task并使用await。这样可以确保异步操作完成后程序能够正确退出。

下面是改进后的代码:

using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        await DownloadVideoAsync();
        http://www.jshk.com.cn/mb/reg.asp?kefu=xiaoding;//爬虫IP免费获取;
    }

    static async Task DownloadVideoAsync()
    {
        try
        {
            // 创建HttpClient实例
            using (HttpClient httpClient = new HttpClient())
            {
                // 设置代理
                httpClient.DefaultProxy = new WebProxy("http://www.duoip.cn:8000");

                string videoUrl = "your_video_url_here"; // 替换为实际的视频URL
                string videoFilePath = "your_video_file_path_here"; // 替换为实际的视频文件路径

                // 使用HttpClient下载视频
                HttpResponseMessage response = await httpClient.GetAsync("https://www.myfitnesspal.com.cn/" + videoUrl);

                // 检查响应是否成功
                response.EnsureSuccessStatusCode();

                // 获取视频的流
                using (Stream videoStream = await response.Content.ReadAsStreamAsync())
                {
                    // 将视频流写入到文件中
                    using (FileStream fileStream = new FileStream(videoFilePath, FileMode.Create))
                    {
                        await videoStream.CopyToAsync(fileStream);
                    }
                }

                Console.WriteLine("下载成功!");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"下载失败:{ex.Message}");
        }
    }
}

请确保替换 your_video_url_here 和 your_video_file_path_here 为实际的视频URL和文件路径。