【发布时间】:2021-10-24 17:20:41
【问题描述】:
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 Version Not Supported
注意:使用 HttpClient/HttpWebRequest 不是我的用例的选项。这是一个超出这个特定问题范围的长篇故事。
编辑:我也试过了
var message = @"GET / HTTP/1.0\r\nHost: www.example.com\r\nConnection: close\r\n\r\n";
【问题讨论】:
-
可能服务器只支持HTTP/2.0?可能不相关,但我建议使用
\n而不是\r\n。 -
@Llama 好吧,我试着确定一下。同样的错误。也试过用\n代替\r\n,结果一样。
-
@Llama:那将是无效的。 RFC2616 规定使用 CRLF,而不是 LF。
-
@Jon 真的吗?哦。已注明。
-
你试过
GET/ HTTP/1.0吗?因为 1.1 似乎“不支持”...