使用 Web 客户端调用时不包含 Content.ReadAsStringAsync() 的定义
does not contain definition for Content.ReadAsStringAsync() when using web client call
这是我的服务
public Task<NewsModel> GetNews(string query,string count)
{
var task = Task<NewsModel>.Factory
.StartNew(() => {
var responseData = "";
NewsModel list = new NewsModel();
var client = new HttpClient();
var uri = "Some URL";
using (var response = client.GetAsync(uri)) {
responseData = response.Content.ReadAsStringAsync();
list = JsonConvert.DeserializeObject<NewsModel>(responseData);
list.value.RemoveAll(item => item.image == null);
}
return list;
});
task.ContinueWith(t => {
}, TaskContinuationOptions.OnlyOnRanToCompletion);
task.ContinueWith(t => {
if (t.Exception == null)
return;
var ex = t.Exception.Flatten();
}, TaskContinuationOptions.OnlyOnFaulted);
return task;
}
编译错误
我在尝试编译时遇到上述错误
你能告诉我如何在上述功能中使用 Content.ReadAsStringAsync()
那些方法 return 任务,因此应该等待它们。
using (var response = await client.GetAsync(uri)) {
responseData = await response.Content.ReadAsStringAsync();
list = JsonConvert.DeserializeObject<NewsModel>(responseData);
list.value.RemoveAll(item => item.image == null);
}
事实上,应该重构整个方法以使用 async/await
HttpClient client = new HttpClient();
public async Task<NewsModel> GetNews(string query, string count) {
NewsModel list = new NewsModel();
var uri = "Some URL";
using (var response = await client.GetAsync(uri)) {
var responseData = await response.Content.ReadAsStringAsync();
list = JsonConvert.DeserializeObject<NewsModel>(responseData);
list.value.RemoveAll(item => item.image == null);
}
return list;
}
这是我的服务
public Task<NewsModel> GetNews(string query,string count)
{
var task = Task<NewsModel>.Factory
.StartNew(() => {
var responseData = "";
NewsModel list = new NewsModel();
var client = new HttpClient();
var uri = "Some URL";
using (var response = client.GetAsync(uri)) {
responseData = response.Content.ReadAsStringAsync();
list = JsonConvert.DeserializeObject<NewsModel>(responseData);
list.value.RemoveAll(item => item.image == null);
}
return list;
});
task.ContinueWith(t => {
}, TaskContinuationOptions.OnlyOnRanToCompletion);
task.ContinueWith(t => {
if (t.Exception == null)
return;
var ex = t.Exception.Flatten();
}, TaskContinuationOptions.OnlyOnFaulted);
return task;
}
编译错误
那些方法 return 任务,因此应该等待它们。
using (var response = await client.GetAsync(uri)) {
responseData = await response.Content.ReadAsStringAsync();
list = JsonConvert.DeserializeObject<NewsModel>(responseData);
list.value.RemoveAll(item => item.image == null);
}
事实上,应该重构整个方法以使用 async/await
HttpClient client = new HttpClient();
public async Task<NewsModel> GetNews(string query, string count) {
NewsModel list = new NewsModel();
var uri = "Some URL";
using (var response = await client.GetAsync(uri)) {
var responseData = await response.Content.ReadAsStringAsync();
list = JsonConvert.DeserializeObject<NewsModel>(responseData);
list.value.RemoveAll(item => item.image == null);
}
return list;
}