Вызов API, который возвращает файл - PullRequest
0 голосов
/ 06 мая 2020

У меня уже есть конечная точка следующего вида:

[Route("sampleroute/getxl")]
public async Task<IActionResult> GetXLTransactionSummaries()
{
    var data = await _service.GetExcelFileByDateAndBranchCode();

    return File(data, "application/octet-stream", sampleFilename);
}

Моя проблема в том, что я не знаю, как вызвать это из моего c# приложения. Я знаю, как вызывать API, возвращающие классы. При вызове API я получил следующий код:

using Newtonsoft.Json;
using RestSharp;
using System;
using System.Net;

......

public File SampleMethod(//I want a File return type
    var client = new RestClient(BaseURL);

    var request = new RestRequest($"{Endpoint}/sampleroute/getxl", Method.GET);

    ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;

    request.AddHeader("Authorization", "Bearer sample-bearer-08937249");

    client.Proxy = WebRequest.DefaultWebProxy;

    var response = client.Execute(request);

    if (response.ErrorException != null) throw new Exception("", response.ErrorException);

    if (response.StatusCode == HttpStatusCode.OK || response.StatusCode == HttpStatusCode.NoContent)
            return response.Content; //not sure about this

    else throw new Exception($"An error has occurred while calling the API: {response.Content}");//I am not sure about this either
}

Это моя кнопка, пытающаяся получить файл:

private void Sample_Click(object sender, RoutedEventArgs e)
{
    File file = SampleMethod();
}

Каким должен быть правильный способ сделать это?

...