等待HttpClient.PostAsync方法编译错误

时间:2016-05-02 22:08:04

标签: c# async-await

我正在尝试使用以下代码发布帖子请求:

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> ...

1 个答案:

答案 0 :(得分:2)

您的方法必须标记为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。然后,编译器为您构建一个状态机,运行时使用该状态机异步执行代码。