@@ -27,6 +27,25 @@ public static async Task<string> PostJsonToStringAsync<TValue>(this HttpClient h
27
27
return await response . Content . ReadAsStringAsync ( cancellationToken ) ;
28
28
}
29
29
30
+ /// <summary>
31
+ /// 发送POST请求,将JSON数据序列化后发送,并将响应内容读取为字符串
32
+ /// </summary>
33
+ /// <typeparam name="TValue">要发送的数据类型</typeparam>
34
+ /// <param name="httpClient">HttpClient实例</param>
35
+ /// <param name="url">请求URL</param>
36
+ /// <param name="data">要发送的数据</param>
37
+ /// <param name="jsonSerializerOptions">JSON序列化选项</param>
38
+ /// <param name="cancellationToken">取消令牌</param>
39
+ /// <returns>响应内容的字符串形式</returns>
40
+ /// <exception cref="ArgumentNullException">当httpClient或url为null时抛出</exception>
41
+ public static async Task < string > PostJsonToStringAsync < TValue > ( this HttpClient httpClient , string url , TValue data , JsonSerializerOptions jsonSerializerOptions , CancellationToken cancellationToken = default )
42
+ {
43
+ ArgumentNullException . ThrowIfNull ( httpClient , nameof ( httpClient ) ) ;
44
+ ArgumentNullException . ThrowIfNull ( url , nameof ( url ) ) ;
45
+ var response = await httpClient . PostAsJsonAsync < TValue > ( url , data , jsonSerializerOptions , cancellationToken ) ;
46
+ return await response . Content . ReadAsStringAsync ( cancellationToken ) ;
47
+ }
48
+
30
49
/// <summary>
31
50
/// 发送POST请求,将JSON数据序列化后发送,并将响应内容读取为字符串
32
51
/// </summary>
@@ -61,6 +80,41 @@ public static async Task<string> PostJsonToStringAsync<TValue>(this HttpClient h
61
80
return await response . Content . ReadAsStringAsync ( cancellationToken ) ;
62
81
}
63
82
83
+ /// <summary>
84
+ /// 发送POST请求,将JSON数据序列化后发送,并将响应内容读取为字符串
85
+ /// </summary>
86
+ /// <typeparam name="TValue">要发送的数据类型</typeparam>
87
+ /// <param name="httpClient">HttpClient实例</param>
88
+ /// <param name="url">请求URL</param>
89
+ /// <param name="data">要发送的数据</param>
90
+ /// <param name="headers">请求头字典</param>
91
+ /// <param name="jsonSerializerOptions">JSON序列化选项</param>
92
+ /// <param name="timeout">超时时间(秒)</param>
93
+ /// <param name="cancellationToken">取消令牌</param>
94
+ /// <returns>响应内容的字符串形式</returns>
95
+ /// <exception cref="ArgumentNullException">当httpClient或url为null时抛出</exception>
96
+ public static async Task < string > PostJsonToStringAsync < TValue > ( this HttpClient httpClient , string url , TValue data , IDictionary < string , string > headers , JsonSerializerOptions jsonSerializerOptions , int timeout = 10 , CancellationToken cancellationToken = default )
97
+ {
98
+ ArgumentNullException . ThrowIfNull ( httpClient , nameof ( httpClient ) ) ;
99
+ ArgumentNullException . ThrowIfNull ( url , nameof ( url ) ) ;
100
+ httpClient . Timeout = TimeSpan . FromSeconds ( timeout ) ;
101
+ if ( headers is { Count : > 0 } )
102
+ {
103
+ foreach ( var header in headers )
104
+ {
105
+ if ( httpClient . DefaultRequestHeaders . Contains ( header . Key ) )
106
+ {
107
+ httpClient . DefaultRequestHeaders . Remove ( header . Key ) ;
108
+ }
109
+
110
+ httpClient . DefaultRequestHeaders . Add ( header . Key , header . Value ) ;
111
+ }
112
+ }
113
+
114
+ var response = await httpClient . PostAsJsonAsync < TValue > ( url , data , jsonSerializerOptions , cancellationToken ) ;
115
+ return await response . Content . ReadAsStringAsync ( cancellationToken ) ;
116
+ }
117
+
64
118
/// <summary>
65
119
/// 发送POST请求,将JSON数据序列化后发送,并将响应内容读取为字节数组
66
120
/// </summary>
@@ -79,6 +133,25 @@ public static async Task<byte[]> PostJsonToByteArrayAsync<TValue>(this HttpClien
79
133
return await response . Content . ReadAsByteArrayAsync ( cancellationToken ) ;
80
134
}
81
135
136
+ /// <summary>
137
+ /// 发送POST请求,将JSON数据序列化后发送,并将响应内容读取为字节数组
138
+ /// </summary>
139
+ /// <typeparam name="TValue">要发送的数据类型</typeparam>
140
+ /// <param name="httpClient">HttpClient实例</param>
141
+ /// <param name="url">请求URL</param>
142
+ /// <param name="data">要发送的数据</param>
143
+ /// <param name="jsonSerializerOptions">JSON序列化选项</param>
144
+ /// <param name="cancellationToken">取消令牌</param>
145
+ /// <returns>响应内容的字节数组形式</returns>
146
+ /// <exception cref="ArgumentNullException">当httpClient或url为null时抛出</exception>
147
+ public static async Task < byte [ ] > PostJsonToByteArrayAsync < TValue > ( this HttpClient httpClient , string url , TValue data , JsonSerializerOptions jsonSerializerOptions , CancellationToken cancellationToken = default )
148
+ {
149
+ ArgumentNullException . ThrowIfNull ( httpClient , nameof ( httpClient ) ) ;
150
+ ArgumentNullException . ThrowIfNull ( url , nameof ( url ) ) ;
151
+ var response = await httpClient . PostAsJsonAsync < TValue > ( url , data , jsonSerializerOptions , cancellationToken ) ;
152
+ return await response . Content . ReadAsByteArrayAsync ( cancellationToken ) ;
153
+ }
154
+
82
155
/// <summary>
83
156
/// 发送POST请求,将JSON数据序列化后发送,并将响应内容读取为字节数组
84
157
/// </summary>
@@ -113,6 +186,41 @@ public static async Task<byte[]> PostJsonToByteArrayAsync<TValue>(this HttpClien
113
186
return await response . Content . ReadAsByteArrayAsync ( cancellationToken ) ;
114
187
}
115
188
189
+ /// <summary>
190
+ /// 发送POST请求,将JSON数据序列化后发送,并将响应内容读取为字节数组
191
+ /// </summary>
192
+ /// <typeparam name="TValue">要发送的数据类型</typeparam>
193
+ /// <param name="httpClient">HttpClient实例</param>
194
+ /// <param name="url">请求URL</param>
195
+ /// <param name="data">要发送的数据</param>
196
+ /// <param name="headers">请求头字典</param>
197
+ /// <param name="jsonSerializerOptions">JSON序列化选项</param>
198
+ /// <param name="timeout">超时时间(秒)</param>
199
+ /// <param name="cancellationToken">取消令牌</param>
200
+ /// <returns>响应内容的字节数组形式</returns>
201
+ /// <exception cref="ArgumentNullException">当httpClient或url为null时抛出</exception>
202
+ public static async Task < byte [ ] > PostJsonToByteArrayAsync < TValue > ( this HttpClient httpClient , string url , TValue data , IDictionary < string , string > headers , JsonSerializerOptions jsonSerializerOptions , int timeout = 10 , CancellationToken cancellationToken = default )
203
+ {
204
+ ArgumentNullException . ThrowIfNull ( httpClient , nameof ( httpClient ) ) ;
205
+ ArgumentNullException . ThrowIfNull ( url , nameof ( url ) ) ;
206
+ httpClient . Timeout = TimeSpan . FromSeconds ( timeout ) ;
207
+ if ( headers is { Count : > 0 } )
208
+ {
209
+ foreach ( var header in headers )
210
+ {
211
+ if ( httpClient . DefaultRequestHeaders . Contains ( header . Key ) )
212
+ {
213
+ httpClient . DefaultRequestHeaders . Remove ( header . Key ) ;
214
+ }
215
+
216
+ httpClient . DefaultRequestHeaders . Add ( header . Key , header . Value ) ;
217
+ }
218
+ }
219
+
220
+ var response = await httpClient . PostAsJsonAsync < TValue > ( url , data , jsonSerializerOptions , cancellationToken ) ;
221
+ return await response . Content . ReadAsByteArrayAsync ( cancellationToken ) ;
222
+ }
223
+
116
224
/// <summary>
117
225
/// 发送POST请求,将JSON数据序列化后发送,并将响应内容读取为流
118
226
/// </summary>
@@ -131,6 +239,25 @@ public static async Task<Stream> PostJsonToStreamAsync<TValue>(this HttpClient h
131
239
return await response . Content . ReadAsStreamAsync ( cancellationToken ) ;
132
240
}
133
241
242
+ /// <summary>
243
+ /// 发送POST请求,将JSON数据序列化后发送,并将响应内容读取为流
244
+ /// </summary>
245
+ /// <typeparam name="TValue">要发送的数据类型</typeparam>
246
+ /// <param name="httpClient">HttpClient实例</param>
247
+ /// <param name="url">请求URL</param>
248
+ /// <param name="data">要发送的数据</param>
249
+ /// <param name="jsonSerializerOptions">JSON序列化选项</param>
250
+ /// <param name="cancellationToken">取消令牌</param>
251
+ /// <returns>响应内容的流形式</returns>
252
+ /// <exception cref="ArgumentNullException">当httpClient或url为null时抛出</exception>
253
+ public static async Task < Stream > PostJsonToStreamAsync < TValue > ( this HttpClient httpClient , string url , TValue data , JsonSerializerOptions jsonSerializerOptions , CancellationToken cancellationToken = default )
254
+ {
255
+ ArgumentNullException . ThrowIfNull ( httpClient , nameof ( httpClient ) ) ;
256
+ ArgumentNullException . ThrowIfNull ( url , nameof ( url ) ) ;
257
+ var response = await httpClient . PostAsJsonAsync < TValue > ( url , data , jsonSerializerOptions , cancellationToken ) ;
258
+ return await response . Content . ReadAsStreamAsync ( cancellationToken ) ;
259
+ }
260
+
134
261
/// <summary>
135
262
/// 发送POST请求,将JSON数据序列化后发送,并将响应内容读取为流
136
263
/// </summary>
@@ -165,6 +292,41 @@ public static async Task<Stream> PostJsonToStreamAsync<TValue>(this HttpClient h
165
292
return await response . Content . ReadAsStreamAsync ( cancellationToken ) ;
166
293
}
167
294
295
+ /// <summary>
296
+ /// 发送POST请求,将JSON数据序列化后发送,并将响应内容读取为流
297
+ /// </summary>
298
+ /// <typeparam name="TValue">要发送的数据类型</typeparam>
299
+ /// <param name="httpClient">HttpClient实例</param>
300
+ /// <param name="url">请求URL</param>
301
+ /// <param name="data">要发送的数据</param>
302
+ /// <param name="headers">请求头字典</param>
303
+ /// <param name="jsonSerializerOptions">JSON序列化选项</param>
304
+ /// <param name="timeout">超时时间(秒)</param>
305
+ /// <param name="cancellationToken">取消令牌</param>
306
+ /// <returns>响应内容的流形式</returns>
307
+ /// <exception cref="ArgumentNullException">当httpClient或url为null时抛出</exception>
308
+ public static async Task < Stream > PostJsonToStreamAsync < TValue > ( this HttpClient httpClient , string url , TValue data , IDictionary < string , string > headers , JsonSerializerOptions jsonSerializerOptions , int timeout = 10 , CancellationToken cancellationToken = default )
309
+ {
310
+ ArgumentNullException . ThrowIfNull ( httpClient , nameof ( httpClient ) ) ;
311
+ ArgumentNullException . ThrowIfNull ( url , nameof ( url ) ) ;
312
+ httpClient . Timeout = TimeSpan . FromSeconds ( timeout ) ;
313
+ if ( headers is { Count : > 0 } )
314
+ {
315
+ foreach ( var header in headers )
316
+ {
317
+ if ( httpClient . DefaultRequestHeaders . Contains ( header . Key ) )
318
+ {
319
+ httpClient . DefaultRequestHeaders . Remove ( header . Key ) ;
320
+ }
321
+
322
+ httpClient . DefaultRequestHeaders . Add ( header . Key , header . Value ) ;
323
+ }
324
+ }
325
+
326
+ var response = await httpClient . PostAsJsonAsync < TValue > ( url , data , jsonSerializerOptions , cancellationToken ) ;
327
+ return await response . Content . ReadAsStreamAsync ( cancellationToken ) ;
328
+ }
329
+
168
330
/// <summary>
169
331
/// 发送POST请求,将表单数据发送,并将响应内容读取为字符串
170
332
/// </summary>
0 commit comments