Y
yspro
Hi there! I want to know common way to create TCPSocket, write http requestand get response.
My simple function:
def read_from_sock(host, port)
sock = TCPSocket.new(host, port)
request = ''
request << "GET / HTTP/1.1\r\n"
request << "Host: #{host}\r\n"
request << "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.1(KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1\r\n"
request << "\r\n"
sock.write(request)
response = ''
until sock.eof?
response << sock.read
end
sock.close
response
end
read_from_sock('yahoo.com', 80) returns
"HTTP/1.1 301 Redirect\r\nDate: Fri, 29 Mar 2013 06:56:20 GMT\r\nConnection: close\r\nServer: YTS/1.20.13\r\nCache-Control: no-store\r\nContent-Type: text/html\r\nContent-Language: en\r\nLocation: http://www.yahoo.com/\r\nContent-Length: 211\r\n\r\n<HEAD><TITLE>Redirect</TITLE></HEAD>\n<BODY BGCOLOR=\"white\" FGCOLOR=\"black\">\n<FONT FACE=\"Helvetica,Arial\"><B>\n \"<em>http://www.yahoo.com/</em>\".<p></B></FONT>\n\n<!-- default \"Redirect\" response (301) -->\n</BODY>\n\u0000"
read_from_sock('facebook.com', 80) or read_from_sock('google.com', 80) hangs forever
Where is my mistake?
My simple function:
def read_from_sock(host, port)
sock = TCPSocket.new(host, port)
request = ''
request << "GET / HTTP/1.1\r\n"
request << "Host: #{host}\r\n"
request << "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.1(KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1\r\n"
request << "\r\n"
sock.write(request)
response = ''
until sock.eof?
response << sock.read
end
sock.close
response
end
read_from_sock('yahoo.com', 80) returns
"HTTP/1.1 301 Redirect\r\nDate: Fri, 29 Mar 2013 06:56:20 GMT\r\nConnection: close\r\nServer: YTS/1.20.13\r\nCache-Control: no-store\r\nContent-Type: text/html\r\nContent-Language: en\r\nLocation: http://www.yahoo.com/\r\nContent-Length: 211\r\n\r\n<HEAD><TITLE>Redirect</TITLE></HEAD>\n<BODY BGCOLOR=\"white\" FGCOLOR=\"black\">\n<FONT FACE=\"Helvetica,Arial\"><B>\n \"<em>http://www.yahoo.com/</em>\".<p></B></FONT>\n\n<!-- default \"Redirect\" response (301) -->\n</BODY>\n\u0000"
read_from_sock('facebook.com', 80) or read_from_sock('google.com', 80) hangs forever
Where is my mistake?