I have created an empty asp.net web application where I have a simple aspx page:
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("Hello world");
}
when i goto http://localhost:2006/1.aspx
I see a page that says "Hello world".
Ok so on c# if I do:
WebClient webClient = new WebClient() { Proxy = null };
var response2 = webClient.DownloadString("http://localhost:2006/1.aspx");
then response2 == "Hello world"
I need to achieve the same thing with a raw tcp connection
I am trying to achieve the same thing with a tcp connection and for some reason it does not work:
byte[] buf = new byte[1024];
string header = "GET http://localhost:2006/1.aspx HTTP/1.1
" +
"Host: localhost:2006
" +
"Connection: keep-alive
" +
"User-Agent: Mozilla/5.0
" +
"
";
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);
here response1 != "Hello Wold". (note I use != meaning NOT equal)
In this example I get a bad request error.
I want to use a tcp connection for learning purposes. I dont understand why the second example does not work. My first reaction was maybe the headers are incorrect so what I did is I launched wireshark in order to see the headers send by my chrom browser. In fact the actual request sent by my browser when I goto http://localhost:2006/1.aspx
is:
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
I have also tried using that request and when I do so I also get a Bad Request response! Why?
In other words I have replaced
string header = "GET http://localhost:2006/1.aspx HTTP/1.1
" +
"Host: localhost:2006
" +
"Connection: keep-alive
" +
"User-Agent: Mozilla/5.0
" +
"
";
FOR
string header = "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" +
"
";
and it still does not work.
See Question&Answers more detail:
os