Как использовать, прочитать и распаковать сторонний API-ответ в приложении ASP.Net MVC - PullRequest
0 голосов
/ 26 августа 2018

Я пытаюсь использовать сторонние API, чей URL выглядит следующим образом:

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 голосов
/ 26 августа 2018

Это в основном из памяти, поэтому я не проверял код.Это должно приблизить вас к тому, что вы ищете:

Сохранение ответа в файл:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...