我创建了一个空的 asp.net Web 应用程序,其中有一个简单的 aspx 页面:
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("Hello world");
}
当我转到时,http://localhost:2006/1.aspx
我看到一个页面,上面写着“Hello world”。
好吧,如果我这样做,那么 c# :
WebClient webClient = new WebClient() { Proxy = null };
var response2 = webClient.DownloadString("http://localhost:2006/1.aspx");
然后 response2 == "你好世界"
我需要使用原始 tcp 连接来实现相同的目标
我正在尝试使用 tcp 连接来实现相同的目的,但由于某种原因它不起作用:
byte[] buf = new byte[1024];
string header = "GET http://localhost:2006/1.aspx HTTP/1.1\r\n" +
"Host: localhost:2006\r\n" +
"Connection: keep-alive\r\n" +
"User-Agent: Mozilla/5.0\r\n" +
"\r\n";
var client = new TcpClient("localhost", 2006);
// send request
client.Client.Send(System.Text.Encoding.ASCII.GetBytes(header));
// get response
var i = client.Client.Receive(buf);
var response1 = System.Text.Encoding.UTF8.GetString(buf, 0, i);
这里 response1 != "Hello Wold"。 (注意我使用 != 表示不相等)
在此示例中,我收到错误的请求错误。
我想使用 tcp 连接进行学习。我不明白为什么第二个例子不起作用。我的第一反应可能是标头不正确,所以我启动了 wireshark 以查看我的 chrom 浏览器发送的标头。事实上,当我转到时,我的浏览器发送的实际请求http://localhost:2006/1.aspx
是:
GET http://localhost:2006/1.aspx HTTP/1.1
Host: localhost:2006
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
我也尝试过使用该请求,当我这样做时,我也会收到错误的请求响应!为什么?
换句话说,我已经替换了
string header = "GET http://localhost:2006/1.aspx HTTP/1.1\r\n" +
"Host: localhost:2006\r\n" +
"Connection: keep-alive\r\n" +
"User-Agent: Mozilla/5.0\r\n" +
"\r\n";
为了
string header = "GET http://localhost:2006/1.aspx HTTP/1.1\r\n" +
"Host: localhost:2006\r\n" +
"Connection: keep-alive\r\n" +
"Cache-Control: max-age=0\r\n" +
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\n" +
"User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36\r\n" +
"Accept-Encoding: gzip,deflate,sdch\r\n" +
"Accept-Language: en-US,en;q=0.8" +
"\r\n\r\n";
它仍然无法正常工作。