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();
}
我正在尝试用 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();
}