来自webapi的响应,字节数组为null

时间:2019-03-20 17:14:06

标签: c# arrays asp.net-web-api response restsharp

我的回复如下

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

并按如下所示调用Web API

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

此调用到达了webapi,并分配了以下值

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 :(得分:0)

您应该在返回类中以base64字符串而不是byte []的形式返回文件

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;

答案 1 :(得分:0)

RestClient可以很好地检索响应,而IRestResponse<T>.Data返回null只是因为RestSharp序列化器无法处理响应格式。您可以自己使用Json.NET并反序列化响应内容,以避免出现此问题

var response = ExecuteRequest(request, requestData);
var result = JsonConvert.DeserializeObject<Getfile_response>(response.Content)
相关问题