python套接字GET [英] python socket GET

查看:100
本文介绍了python套接字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.我知道这不是最好的方法,并且那里有类似httpliburllib2的库,但是我不能将它们用于该项目(用于学校).我必须使用socket

p.s. I know this isn't the best way to do it and that there are library like httplib and urllib2 out there, but I can't use those for this project (it's for school). I have to use the socket 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指定您应添加Host标头字段rel ="noreferrer"> HTTP 1.1 RFC中的主机部分.

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆