我使用的Python版本是3.3。 假设我无法通过关闭连接发送http请求。但实际上,它在调用close()函数后仍然有效。这是我的代码:
conn = http.client.HTTPConnection("192.168.8.186:8081")
conn.request("GET", "")
response = conn.getresponse()
data = response.read()
data
b"403 Forbidden \nRequest forbidden by administrative rules.\n\n'"
conn.close() #???
conn.request("GET", "")
(conn.getresponse()).read()
b'403 Forbidden\nRequest forbidden by administrative rules.\n\n'
答案 0 :(得分:3)
从HTTPConnection
的代码来看,似乎request
调用会调用send
,如果没有打开则会打开连接:
def send(self, data):
"""Send `data' to the server."""
if self.sock is None:
if self.auto_open:
self.connect()
else:
raise NotConnected()
...
从这段代码中可以看出,将auto_open
标志设置为0(默认情况下为1)可以避免此行为。在这种情况下,您可能需要自己调用connect
函数。
这是基于我的Python 2.7.3代码。