使用 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;
}