不支持 TcpClient 505 HTTP 版本

TcpClient 505 HTTP Version Not Supported

var client = new TcpClient("www.example.com", 80);
var message = @"GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: close\r\n\r\n";
var stream = client.GetStream();
var data = Encoding.ASCII.GetBytes(message);
await stream.WriteAsync(data, 0, data.Length);
data = new byte[256];
var bytes = await stream.ReadAsync(data, 0, data.Length);
var responseData = Encoding.ASCII.GetString(data, 0, bytes);

第一行响应:HTTP/1.0 505 不支持 HTTP 版本

注意:使用 HttpClient/HttpWebRequest 不是我的用例的选项。说来话长,超出了这个具体问题的范围。

编辑:我也试过了

var message = @"GET / HTTP/1.0\r\nHost: www.example.com\r\nConnection: close\r\n\r\n";

比较您发送的内容:

针对您要发送的内容:

这归结为错误地分配 message 字符串文字。您需要一个常规字符串:

var message = "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: close\r\n\r\n";

否则,您发送的实际上是错误的:GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n