c# - 如何在 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 文件的集合。
解决方案
这主要来自内存,所以我没有测试过代码。它应该让你非常接近你正在寻找的东西:
将响应保存到文件:
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);
推荐阅读
- azure - login.microsoft.com - Azure - 多次登录不起作用
- java - 杰克逊,我如何在自定义中使用默认反序列化器
- c# - EntityFramework 6(代码优先)SQL DB身份交互的问题-EF尝试在身份列中插入显式值
- sql-server - 从 xml 表列中获取值
- html - 如何在桌面(离线)和网站(在线)上查看 css 样式?
- arrays - 当我在循环中初始化它时,为什么我的数组不包含我的所有值?
- session - 会话到期日期固定为 1969
- angular - 角度5设置值嵌套表单组表单数组
- javascript - 在 Fabric.js 中获取单击对象上的当前光标位置
- c# - TLS 1.2 仍然无法与 Unity 2018.2.0b3 一起使用