如何在ASP.Net MVC应用程序中使用,读取和解压缩第三方api响应

时间:2018-08-25 22:38:27

标签: c# .net asp.net-mvc rest asp.net-web-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:我希望将回复解压缩并保存到文件夹中。

有人可以指导我吗?

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

1 个答案:

答案 0 :(得分:1)

这主要来自内存,因此我没有测试代码。它应该使您非常接近要寻找的东西:

保存对文件的响应:

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);