我的回复如下
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。缺少什么
答案 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)