-
Notifications
You must be signed in to change notification settings - Fork 447
/
Copy pathHttpRequestMessageExtensions.cs
41 lines (36 loc) · 1.2 KB
/
HttpRequestMessageExtensions.cs
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
41
using WebApiClientCore.Internals;
namespace System.Net.Http
{
/// <summary>
/// HttpRequestMessage扩展
/// </summary>
public static class HttpRequestMessageExtensions
{
/// <summary>
/// 读取请求头
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public static string GetHeadersString(this HttpRequestMessage request)
{
var uri = request.RequestUri;
Span<char> buffer = stackalloc char[4 * 1024];
var builder = new ValueStringBuilder(buffer);
if (uri != null && uri.IsAbsoluteUri)
{
const string host = "Host";
builder.AppendLine($"{request.Method} {uri.PathAndQuery} HTTP/{request.Version}");
if (request.Headers.Contains(host) == false)
{
builder.AppendLine($"{host}: {uri.Authority}");
}
}
builder.Append(request.Headers.ToString());
if (request.Content != null)
{
builder.Append(request.Content.Headers.ToString());
}
return builder.ToString();
}
}
}