【发布时间】:2015-06-28 17:38:38
【问题描述】:
以下代码出现两个错误:
public async Task<string> TestDownloadTask()
{
HttpResponseMessage response = null;
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri(@"https://api.nasa.gov/planetary/apod");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
response.EnsureSuccessStatusCode();
response = await client.GetStringAsync("?concept_tags=True&api_key=DEMO_KEY");
}
return response.Content;
}
我明白了:
- 无法在“await”行等待“System.Threading.Tasks.Task”
- 无法将表达式类型“System.Net.Http.Content”转换为返回类型“字符串”
我一直在尝试编写将从 Web 服务下载字符串的上述代码,但关于如何使用 async 和 await 以及如何使用 HttpClient 似乎有很多相互矛盾的信息,我不知道我写的代码有什么问题。
我哪里出错了,我应该怎么做?
【问题讨论】:
-
您确定这是您遇到的错误吗?
GetStringAsync返回一个Task<string>,并且您试图将结果分配给HttpResponseMessage类型的变量,因此您的代码肯定由于类型不匹配而损坏,但您似乎不太可能收到错误消息“不能等待System.Threading.Tasks.Task”。
标签: c# async-await task-parallel-library