如何在 C# 中发送原始 HTTP 请求?

时间:2021-04-12 19:35:48

标签: c# .net http

我正在编写一个 .NET 5 应用程序,它通过 TLS 连接向某个端点发送请求。

我尝试使用 HTTPClient,但它没有用,因为我需要在调用 Send 方法之前构造一个 HTTPRequestMessage。

HttpClient client = new HttpClient();
var response = await client.SendAsync(requestMessage);

var responseContent = await response.Content.ReadAsStringAsync();

我需要发送上面预序列化请求的字节而不将其转换为 HTTP 对象。

POST /app/test HTTP/1.1
Content-type: application/json
Content-Length: 23

{"msg": "test message"}

1 个答案:

答案 0 :(得分:2)

<块引用>

我需要发送上面预序列化请求的字节而不将其转换为 HTTP 对象。

这非常不寻常。 HttpClient 不能用于此目的,除非您知道 HttpRequestMessage 的解析器。可能有一个图书馆可以做到这一点,但我不知道有一个。

要发送字节数组,您必须使用较低级别的连接,例如 SocketTcpClient。您需要自己进行 TLS 协商 - SslStream 可能会有所帮助。

相关问题