不支持 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
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