python套接字GET [英] python socket GET
问题描述
在堆栈溢出的其他帖子中,这应该可以正常工作
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
,但是由于某种原因,它只是挂起(在recv
)并且从不打印.我知道对www.cnn.com的请求将对数据进行分块处理,但是我至少应该从recv
中读取某些内容,对吧?
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.我知道这不是最好的方法,并且那里有类似
httplib
和urllib2
的库,但是我不能将它们用于该项目(用于学校).我必须使用socket
库
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")
此外,HTTP 1.1指定您应添加
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")
这篇关于python套接字GET的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!