2021 年在 C# 中发出简单的非异步 post 请求

making simple non-asynchronous post request in c# in 2021

我正在尝试用 C# 编写一些非常简单的代码来生成一个 HTTPS post 请求和 returns 结果,但我对使用哪个库感到有点困惑。因为我的代码只需要 运行 一个 HTTPS 请求,所以我不需要任何异步,我觉得没有它会更简单。

似乎 System.Net.Http.HttpClient 不是为非异步用途构建的,而 System.Net.WebRequest 在整个文档中都有关于它如何被弃用的警告,我应该改用 HttpClient。绝大多数关于 WebRequest 的教程和 Whosebug 问题都是 5 年以上甚至 10 年以上的历史。

有人可以为我在 2021 年的用例指出一个好的教程或库吗?

我认为你应该适合 System.Net.Http.HttpClient.Send(...)

这个函数不是异步的。

不过,使用异步函数也不是什么麻烦事。他们只是 return 一个任务。如果访问 returned Task 的 Result 属性,线程将自动等待任务完成。所以基本上它会同步处理请求。

肯定会为此使用 HttpClient。它有一个同步发送方法,您可以使用

var client = new HttpClient();
            
    var webRequest = new HttpRequestMessage(HttpMethod.Post, "http://your-api.com")
    {
        Content = new StringContent("{ 'some': 'value' }", Encoding.UTF8, "application/json")
    };

    var response = client.Send(webRequest);

    using var reader = new StreamReader(response.Content.ReadAsStream());
            
    return reader.ReadToEnd();
}