当前位置:  开发笔记 > 编程语言 > 正文

python socket GET

如何解决《pythonsocketGET》经验,为你挑选了3个好方法。

从堆栈溢出的其他帖子来看,这应该是有效的

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

但由于某种原因,它只是挂起(at recv)并且从不打印.我知道对www.cnn.com的请求会将数据分块,但我至少应该从中读取一些内容recv,对吧?

PS我知道这是不是做到这一点的最好办法,而且有像库httpliburllib2在那里,但我不能使用那些为这个项目(这是学校).我必须使用该socket

Takis.. 14

您忘记在请求行后发送空行:

s.sendall("GET / HTTP/1.1\r\n\r\n")

此外,HTTP 1.1指定您应该添加Host标头字段,如HTTP 1.1 RFC中的Host部分所述.

s.sendall("GET / HTTP/1.1\r\nHost: www.cnn.com\r\n\r\n")


mhawke.. 5

您的代码几乎是正确的,但您需要发送2个\r\n序列以满足HTTP协议.

有效的GET请求将如下所示(注2行):

GET / HTTP/1.1

所以你的代码应该是:

s.sendall('GET / HTTP/1.1\r\n\r\n')

此外,有效的HTTP 1.1请求还需要额外的标头,例如Host:.您需要将它们添加到您的请求中,如下所示:

s.sendall('''GET / HTTP/1.1
Host: cnn.com

''')


james smith.. 5

很抱歉浪费大家的时间。我刚刚发现这个解决方案在这里对堆栈溢出(只是把我在谷歌的一些措词搜索找到)

import socket
request = b"GET / HTTP/1.1\nHost: www.cnn.com\n\n"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("cnn.com", 80))
s.send(request)
result = s.recv(10000)
while (len(result) > 0):
    print(result)
    result = s.recv(10000)

关于结局,所有答案都是正确的,\r\n\r\n但是返回的301状态是正确的。此解决方案似乎以某种方式遵循重定向?无论如何,这个解决方案对我有用



1> Takis..:

您忘记在请求行后发送空行:

s.sendall("GET / HTTP/1.1\r\n\r\n")

此外,HTTP 1.1指定您应该添加Host标头字段,如HTTP 1.1 RFC中的Host部分所述.

s.sendall("GET / HTTP/1.1\r\nHost: www.cnn.com\r\n\r\n")



2> mhawke..:

您的代码几乎是正确的,但您需要发送2个\r\n序列以满足HTTP协议.

有效的GET请求将如下所示(注2行):

GET / HTTP/1.1

所以你的代码应该是:

s.sendall('GET / HTTP/1.1\r\n\r\n')

此外,有效的HTTP 1.1请求还需要额外的标头,例如Host:.您需要将它们添加到您的请求中,如下所示:

s.sendall('''GET / HTTP/1.1
Host: cnn.com

''')



3> james smith..:

很抱歉浪费大家的时间。我刚刚发现这个解决方案在这里对堆栈溢出(只是把我在谷歌的一些措词搜索找到)

import socket
request = b"GET / HTTP/1.1\nHost: www.cnn.com\n\n"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("cnn.com", 80))
s.send(request)
result = s.recv(10000)
while (len(result) > 0):
    print(result)
    result = s.recv(10000)

关于结局,所有答案都是正确的,\r\n\r\n但是返回的301状态是正确的。此解决方案似乎以某种方式遵循重定向?无论如何,这个解决方案对我有用

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有