From the other posts on stack overflow this should be working
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("www.cnn.com" , 80))
s.sendall("GET / HTTP/1.1\r\n")
print s.recv(4096)
s.close
but for some reason it just hangs (at recv
) and never prints. I know that a request to www.cnn.com will chunk it's data but I should at least read something from recv
, right?
p.s. I know this isn't the best way to do it and that there are library like
httplib
andurllib2
out there, but I can't use those for this project (it's for school). I have to use thesocket
library
You forgot to send a blank line after your request line:
s.sendall("GET / HTTP/1.1\r\n\r\n")
Furthermore, HTTP 1.1 specifies you should add the Host
header field as documented in the Host section in the HTTP 1.1 RFC.
s.sendall("GET / HTTP/1.1\r\nHost: www.cnn.com\r\n\r\n")