首页 > 解决方案 > 如何在 ASP.Net MVC 应用程序中使用、读取和解压缩第三方 API 响应

问题描述

我正在尝试使用 URL 如下所示的第三方 API:

https://api.crowdin.com/api/project/{PROJECT_NAME}/download/all.zip?key={MY_KEY}

此 api 返回一个 zip 文件作为“all.zip”作为响应。

当我进入浏览器并提出这个请求时,我会下载一个 all.zip 文件。现在我想编写 C# 代码来得到这个结果。以下是我的尝试:

public async Task<ActionResult> Index()
        {
            var client = new HttpClient();
            client.BaseAddress = new Uri("https://api.crowdin.com/");
            HttpResponseMessage response = await client.GetAsync("api/project/{MY_PROJECT}/download/all.zip?key={MY_KEY}");
           // WHAT TO WRITE HERE
            return View();
        }

问题 1:我收到了成功的回复,内容类型为application/zip,但现在我不知道如何阅读此回复。

问题2:我希望将响应解压缩并保存到一个文件夹中。

PS:响应.zip文件是.resx 文件的集合。

标签: c#.netasp.net-mvcrestasp.net-web-api

解决方案


这主要来自内存,所以我没有测试过代码。它应该让你非常接近你正在寻找的东西:

将响应保存到文件:

var response = httpClient.GetAsync("api/project/{MY_PROJECT}/download/all.zip?key={MY_KEY}");
using (var stream = await response.Content.ReadAsStreamAsync())
using (var fs = new FileStream(filename) {
    await stream.CopyToAsync(fs);
}

解压缩文件(您也可以在内存中执行此操作)

System.IO.Compression.ZipFile.ExtractToDirectory(filename, extractPath);

推荐阅读