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 方法编译错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章

JS async和await关键字

async 与await 解决异步接口返回数据不能赋值的妙用

Kotlin 协程(三) async和await

在 then 回调中使用 await - 保留关键字“await”

JavaScript async/await:await 是保留字 [重复]

await