提问者:小点点

await HttpClient.PostAsync方法编译错误[重复]


我正在尝试使用以下代码发出post请求:

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返回


共1个答案

匿名用户

您的方法必须标记为:

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"));
}

由于既不知道方法的返回类型,也不知道方法名和它的参数,所以我使用了模糊的名称,也没有参数。你得把它们换成真的。

通常,每当您想要使用运算符时(当您想要进行异步调用时就会出现这种情况),您还必须使用运算符。运算符用于表示要执行操作。然后编译器为您构建一个状态机,运行库使用该状态机异步执行代码。