-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHttpResponseMessageExtensions.cs
More file actions
40 lines (36 loc) · 1.45 KB
/
HttpResponseMessageExtensions.cs
File metadata and controls
40 lines (36 loc) · 1.45 KB
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
31
32
33
34
35
36
37
38
39
40
using System.Text;
namespace WebServer
{
internal static class HttpResponseMessageExtensions
{
/// <summary>
/// 将Http响应报文转为字符串便于发送和调试
/// </summary>
/// <param name="httpResponseMessage">Http响应报文对象</param>
/// <returns></returns>
public static string ToHttpResponseMessageString(this HttpResponseMessage httpResponseMessage)
{
var result = new StringBuilder();
// 状态行
result.Append(
$"HTTP/{httpResponseMessage.Version.Major}.{httpResponseMessage.Version.Minor} {(int)httpResponseMessage.StatusCode} {httpResponseMessage.ReasonPhrase}\r\n");
// 头部
foreach (var (headerKey, headerValue) in httpResponseMessage.Headers)
{
result.Append($"{headerKey}: {string.Join(", ", headerValue)}\r\n");
}
// Content-Headers
foreach (var (headerKey, headerValue) in httpResponseMessage.Content.Headers)
{
result.Append($"{headerKey}: {string.Join(", ", headerValue)}\r\n");
}
// 头部结束
result.Append("\r\n");
// 响应体
using var reader = new StreamReader(httpResponseMessage.Content.ReadAsStream());
var content = reader.ReadToEnd();
result.Append(content);
return result.ToString();
}
}
}