C#语言
提示
下面示例适用于 .NET 6+ 控制台程序,使用框架内置的 System.Text.Json 和 HttpClient,无需安装第三方包。
# POST 发送(.NET 6+ 最小托管程序)
using System.Text;
using System.Text.Json;
// 使用静态 HttpClient,避免每次请求都创建实例导致 socket 耗尽
using var httpClient = new HttpClient { Timeout = TimeSpan.FromSeconds(10) };
var channelCode = "4d05f4abdb0a0c2a0269900809946903";
var payload = new
{
head = "测试标题", // 必填
body = "测试内容 " + DateTime.Now, // 选填,支持换行
url = "" // 选填:点击跳转链接
};
var json = JsonSerializer.Serialize(payload);
using var content = new StringContent(json, Encoding.UTF8, "application/json");
using var response = await httpClient.PostAsync(
$"https://www.phprm.com/services/push/send/{channelCode}", content);
var res = await response.Content.ReadAsStringAsync();
Console.WriteLine("推送状态:" + (int)response.StatusCode);
Console.WriteLine(res);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# GET 发送(最简单)
using System.Net;
using var httpClient = new HttpClient();
var channelCode = "4d05f4abdb0a0c2a0269900809946903";
var head = WebUtility.UrlEncode("测试标题"); // 中文必须 UrlEncode
var body = WebUtility.UrlEncode("测试内容");
var url = $"https://www.phprm.com/services/push/trigger/{channelCode}?head={head}&body={body}";
var res = await httpClient.GetStringAsync(url);
Console.WriteLine(res);
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# .NET Framework 4.x 写法
老项目没有 using var 和顶层语句时,可以用传统写法(需 NuGet 安装 Microsoft.Net.Http,JSON 可使用 Newtonsoft.Json):
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
class Program
{
private static readonly HttpClient httpClient = new HttpClient();
static async Task Main(string[] args)
{
var channelCode = "4d05f4abdb0a0c2a0269900809946903";
var json = JsonConvert.SerializeObject(new
{
head = "测试标题",
body = "测试内容",
url = ""
});
using (var content = new StringContent(json, Encoding.UTF8, "application/json"))
using (var response = await httpClient.PostAsync(
$"https://www.phprm.com/services/push/send/{channelCode}", content))
{
var res = await response.Content.ReadAsStringAsync();
Console.WriteLine("推送状态:" + (int)response.StatusCode);
Console.WriteLine(res);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
注意
HttpClient建议使用单例(静态/using 顶层),不要每次发送都new HttpClient(),否则高并发下会耗尽 socket。- GET 请求的中文参数必须用
WebUtility.UrlEncode编码。
Last Updated: 2026/09/11, 21:21:10