await HttpClient.PostAsync 方法编译错误[重复]
Posted
技术标签:
【中文标题】await HttpClient.PostAsync 方法编译错误[重复]【英文标题】:await HttpClient.PostAsync method compilation error [duplicate] 【发布时间】:2016-08-27 19:20:38 【问题描述】:我正在尝试使用以下代码进行发布请求:
string resourceAddress = "url";
string postBody = "jsonbody";
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage x = await httpClient.PostAsync(resourceAddress, new StringContent(postBody, Encoding.UTF8, "application/json"));
我得到了这个编译错误: 'await' 运算符只能在异步方法中使用
有什么想法吗? PostAsync 返回Task<HttpResponseMessage>
...
【问题讨论】:
嗯,你的方法是async
吗?
【参考方案1】:
您的方法必须标记为async
:
public async ReturnType MethodName()
string resourceAddress = "url";
string postBody = "jsonbody";
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage x = await httpClient.PostAsync(resourceAddress, new StringContent(postBody, Encoding.UTF8, "application/json"));
我既不知道方法的返回类型也不知道方法名称及其参数,我使用了模糊的名称并且没有参数。您必须用真实的替换它们。
一般来说,当你想要使用await
操作符时(当你想要进行异步调用时会发生这种情况),你还必须使用async
操作符。 async
操作符用来表示你要去await
某事。然后编译器为您构建一个状态机,运行时使用它来异步执行您的代码。
【讨论】:
@TomerZvirsh 欢迎您。我很高兴能帮上忙。以上是关于await HttpClient.PostAsync 方法编译错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章
async 与await 解决异步接口返回数据不能赋值的妙用
在 then 回调中使用 await - 保留关键字“await”