在已经创建的 TCP 套接字上使用 Webclient

问题描述

我需要通过 HTTP-Rest 接口与设备通信。 我无法主动创建与此设备的连接。 该设备正在使用我的程序创建 TCP 套接字。因此,我正在侦听此设备的端口。 创建套接字后,我需要在该套接字之上向该设备发送 HTTP 请求。我充当 HTTP 客户端,设备充当 HTTP 服务器。 我不能为此使用 WebClient,因为它创建了自己的 TCP-Socket。但是我所说的套接字已经创建。 我的第一个问题是:是否还有一种方法可以使用 WebClient 或其他替代方法来创建 HTTP 请求并读出响应?

如果我不能使用Webclient,我需要自己实现它。 我看到可以使用 WebClient 创建 HTTP 标头字节:

void SendHTTPRequest(string message)
{
  //create Header Bytes
  WebClient web = new WebClient();
  web.Headers.Set(HttpRequestHeader.Connection,"keep-alive");
  web.Headers.Set(HttpRequestHeader.Accept,"*/*");
  web.Headers.Set(HttpRequestHeader.AcceptEncoding,"gzip,deflate,br");

  //Built list with request bytes
  List<byte> bytesToSend = new List<byte>();
  bytesToSend.AddRange(Encoding.ASCII.GetBytes(message));
  bytesToSend.AddRange(web.Headers.ToByteArray());

  //Send request to the device
  WriteBytes(bytesToSend.ToArray());
}

我的第二个问题是:有没有办法从响应中接收到的字节中解码 HTTP 标头?这样我只需要实现HTTP-Body的write和read方法即可。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)