Reputation: 443
this is my service
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;
}
compilation error
i am getting the above error when i try to compile
can you please tell me how can i use Content.ReadAsStringAsync() in the above functionality
Upvotes: 2
Views: 1987
Reputation: 247333
Those methods return Tasks so they should be awaited.
using (var response = await client.GetAsync(uri)) {
responseData = await response.Content.ReadAsStringAsync();
list = JsonConvert.DeserializeObject<NewsModel>(responseData);
list.value.RemoveAll(item => item.image == null);
}
In fact that entire method should be refactored to use 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;
}
Upvotes: 3