如何在 ASP.Net MVC 应用程序中使用、读取和解压缩第三方 API 响应
Posted
技术标签:
【中文标题】如何在 ASP.Net MVC 应用程序中使用、读取和解压缩第三方 API 响应【英文标题】:How to consume, read and unzip a third party API response in ASP.Net MVC application 【发布时间】:2019-01-31 22:57:10 【问题描述】:我正在尝试使用 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】:这主要来自记忆,所以我没有测试过代码。它应该让你非常接近你正在寻找的东西:
将响应保存到文件:
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);
【讨论】:
我需要用什么代替filename
?
文件名...您要保存文件的位置。
工作就像一个魅力。非常感谢!以上是关于如何在 ASP.Net MVC 应用程序中使用、读取和解压缩第三方 API 响应的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core Web 应用程序系列- 在ASP.NET Core中使用Autofac替换自带DI进行批量依赖注入(MVC当中应用)
如何在 ASP.NET MVC 应用程序中管理和部署架构(使用 NHibernate)
使用命令行如何在 ASP.NET 中首先从 DB 搭建脚手架 - 而不是 ASP.NET Core MVC?
如何在 ASP.NET Core MVC 中使用依赖注入设计存储库模式?