如何等待PostAsync方法完成
如何等待PostAsync方法完成
我正在进行POST请求,但是我的调试器在这行之后不停止:
var result = await client.PostAsync(_url, data);
我的完整程序如下:
class Program { static void Main(string[] args) { var _url = "https://test.test.test:9100/path/path"; CheckHttpPostAsync(new { id = 123123, username = "testas" }); async Task CheckHttpPostAsync(object payload) { using var client = new HttpClient(); var json = JsonConvert.SerializeObject(payload); var data = new StringContent(json, Encoding.UTF8, "application/json"); try { var result = await client.PostAsync(_url, data); Console.WriteLine(result); } catch (Exception e) { Console.WriteLine(e); } } } }
即使我使用了await,控制台中什么也没有输出。
相同的JSON在Postman中的POST请求正常工作。
编辑:添加了完整的代码。
问题的原因是在调用CheckHttpPostAsync时没有使用await关键字进行等待,同时Main方法也需要声明为async Task Main。解决方法是在CheckHttpPostAsync方法前加上async关键字并使用await关键字进行等待,同时将Main方法声明为async Task Main。
以下是整理后的文章:
在上述代码中,我们可以看到一个问题:在调用CheckHttpPostAsync方法时没有使用await关键字进行等待。同时,Main方法也需要声明为async Task Main。接下来我们来解决这个问题。
首先,在调用CheckHttpPostAsync方法时,我们需要使用await关键字进行等待。修改后的代码如下:
await CheckHttpPostAsync(new { id = 123123, username = "testas" });
另外,在Main方法中,我们需要将其声明为async Task Main。修改后的代码如下:
static async Task Main(string[] args)
{
// ...
}
问题的原因是因为在调用CheckHttpPostAsync方法时没有使用await关键字进行等待,导致程序结束。一旦程序结束,异步操作也被终止,因此不会输出任何内容。
至于为什么在调用ReadAsStringAsync方法时使用Result而不是await,这是我的错误。我已经进行了修改。
通过以上的修改,我们解决了问题。现在,我们可以正确地等待PostAsync方法的执行,并在结果返回后输出相应的内容。