如何等待PostAsync方法完成

13 浏览
0 Comments

如何等待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请求正常工作。

编辑:添加了完整的代码。

0
0 Comments

问题的原因是在调用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方法的执行,并在结果返回后输出相应的内容。

0