我正在尝试使用其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文件的集合。
答案 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);