httpclient调用webapi接口发生的疑问

2019-01-02 20:42发布

问题:

我构建了以下接口:

[HttpPost]
public DataSourceResult Get([DataSourceRequest]DataSourceRequest request)
{
   var data = svrbase.Find(x => x.Deleted == false);
   var model =  data.ToDataSourceResult(request);
   return model;
}

返回值是DataSourceResult,它其实是一个复杂类型,包含了分页信息,排序信息,数据列表。

以下是返回值类型

    public class DataSourceResult
    {
        public DataSourceResult();

        public IEnumerable Data { get; set; }
        public int Total { get; set; }
        public IEnumerable<AggregateResult> AggregateResults { get; set; }
        public object Errors { get; set; }
    }

 

以下参数列表

    public class DataSourceRequest
    {
        public DataSourceRequest();

        public int Page { get; set; }
        public int PageSize { get; set; }
        public IList<SortDescriptor> Sorts { get; set; }
        public IList<IFilterDescriptor> Filters { get; set; }
        public IList<GroupDescriptor> Groups { get; set; }
        public IList<AggregateDescriptor> Aggregates { get; set; }
    }

我在传入参数的时候可以正常传入,只是在获取返回值的时候,不知道如何解析,提示解析错误,

我的webapi的调用方法如下所示:

HttpClient clint = new HttpClient(); 
var response = await PostAsJsonAsync(path, param);//传入参数,服务器端可以正常返回数据。
response.EnsureSuccessStatusCode();

//执行到下面这一行开始出错:
var result = await response.Content.ReadAsAsync<DataSourceResult>();

就是最后一名该如何写,以解析返回来的业务数据呢?就是将返回值解析为DataSourceRequest。请各位指点一下,谢谢!

回答1:

先试试读取json字符串

var result = await response.Content.ReadAsStringAsync();


回答2:

public IEnumerable Data { get; set; }

你这个从JSON转换实体的时候标注上类型!比如:

public IEnumerable<A> Data { get; set; }

 

public class A{

public string name{get;set;};

public string custNbr{get;set;};

public string abcType{get;set;};

public string remark{get;set;};

}

试下!



标签: