我有一个客户服务。在该服务中,我有以下方法:为什么我的HttpClient调用不会返回预期的Json?
public async Task<IEnumerable<Client>> ReadAsync()
{
using (var conn = new SqlConnection(_connString))
using (var cmdRead = new SqlCommand("SELECT * FROM Client", conn))
{
conn.Open();
var ret = new List<Client>();
var reader = await cmdRead.ExecuteReaderAsync();
while (reader.Read())
{
var client = BuildFromDataReader(reader);
ret.Add(client);
}
return ret;
}
}
此方法是通过一个Web API控制器动作称为像这样:
[HttpGet]
public async Task<IEnumerable<Client>> Get()
{
// API side.
IEnumerable<Client> clients = await _clients.ReadAsync();
return clients;
}
我希望内容协商默认是JSON和这样期待这个动作返回一个JSON编码的Client
列表。
我这一切的客户端尝试使用Web API看起来更像是这样的:
public async Task<IEnumerable<Client>> ReadAsync()
{
var json = await Client.GetStringAsync("api/Clients/Get");
var clients = JsonConvert.DeserializeObject<IEnumerable<Client>>(json);
return clients;
}
在断点处的检查,json
有"value"
(包括引号)的值。我试过了什么?上面的代码。我期望通过Web API操作返回的json在哪里?
PS:我忙于ASP.NET Core项目,所以我们也使用了NewtonSoft JSON。
等一下我来看看。快速的问题。是web服务的web api 2还是asp.net核心? – Nkosi
'Client.GetStringAsync'方法里面有什么?你说“客户”是你的业务对象,代表你的业务客户,而不是通信客户,对吗? –
@ProfK问题是可挽回的是你提供[mcve]。现在需要澄清问题的问题太多了。 Brian问了一个关于'GetStringAsync'的好问题。这是一个失败点。我认为它来自HttpClient。还有web api的设计方式。 – Nkosi