ответ от webapi с байтовым массивом получить как ноль - PullRequest
0 голосов
/ 20 марта 2019

У меня есть ответ, как показано ниже

public class Getfile_response
{
  public string file_name { get; set; }
  public byte[] file { get; set; }
}

И вызов веб-API выглядит следующим образом

var request = new RestRequest("API/Eprocess/GetMEREResponse", Method.POST);
var response = ExecuteRequest<Getfile_response>(request, requestData);

, и этот вызов достигает веб-интерфейса, и ему присваивается значение, как показано ниже

resp.file_name = "test.xml";

byte[] fileBytes = System.IO.File.ReadAllBytes(@"C:\XMLFiles\response_files\test.xml");
resp.file = fileBytes;

return resp;

это присваивает значения, но когда он достигает отклика, он показывает как ноль.Если я прокомментирую байтовый массив, то ответ будет показан с file_name.Чего не хватает

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

Прекрасно получается ответ RestClient, а IRestResponse<T>.Data возвращает null только потому, что сериализатор RestSharp не может обработать формат ответа.Вы можете использовать Json.NET и десериализовать содержимое ответа самостоятельно, чтобы избежать этой проблемы

var response = ExecuteRequest(request, requestData);
var result = JsonConvert.DeserializeObject<Getfile_response>(response.Content)
0 голосов
/ 20 марта 2019

Вы должны вернуть ваш файл в виде строки base64 вместо байта [] в вашем возвращаемом классе

public string file { get; set; }

И поменяй свой контроллер

resp.file_name = "test.xml";

byte[] fileBytes = System.IO.File.ReadAllBytes(@"C:\XMLFiles\response_files\test.xml");
resp.file = Convert.ToBase64String(fileBytes);

return resp;
...