为什么无法在Python中获得响应?

时间:2016-03-17 02:56:46

标签: python http

我在python.org

中读到了示例http.client
import http.client
conn = http.client.HTTPSConnection("www.python.org")
conn.request("GET", "/")
r1 = conn.getresponse()
print(r1.status, r1.reason)
data1 = r1.read()  # This will return entire content.
# The following example demonstrates reading data in chunks.
conn.request("GET", "/")
r1 = conn.getresponse()

没关系,但以下代码不是:

 import http.client
 conn = http.client.HTTPSConnection("www.python.org")
 conn.request("GET", "/")
 r1 = conn.getresponse()
 # The different here
 conn.request("GET", "/")
 r1 = conn.getresponse()
Error: http.client.ResponseNotReady: Request-sent

我无法理解。

2 个答案:

答案 0 :(得分:1)

来自python官方文档:

  

HTTPConnection.getresponse()应在请求后调用   发送以从服务器获取响应。返回HTTPResponse   实例

     

注意:您必须先阅读整个回复,然后才能向服务器发送新请求。

Source

正如您可以注意到的那样,您必须在发送请求之前阅读整个回复,这样做会有所不同......

您可以查看下面的使用完整链接,以获取有关httplib的更多信息:

答案 1 :(得分:0)

看看你删除了什么:

print(r1.status, r1.reason)
data1 = r1.read()

print是无害的,但是在您可以在同一连接上获得另一个响应之前,需要读取响应的内容。否则,响应将被阻止,阻止进一步的沟通。