【问题标题】:await HttpClient.PostAsync method compilation error [duplicate]await HttpClient.PostAsync 方法编译错误[重复]
【发布时间】: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吗?

标签: c# async-await


【解决方案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 欢迎您。我很高兴能帮上忙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
  • 1970-01-01
  • 1970-01-01
  • 2014-08-28
  • 2014-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多