我无法将HTTPResponse对象从被调用的函数传递回调用者。
def caller():
r = called()
with open('/some/file/', 'wb') as f:
f.write(r.read())
def called():
conn = http.client.HTTPSConnection('/some/host',
'some port',
'some ssl.Context')
conn.request('GET', '/some/url', {'some': 'headers'})
r = conn.getresponse()
conn.close()
return r
执行上述操作时,会创建文件,但不会写入任何内容。但是,如果我执行以下操作:
def caller():
r = called()
with open('/some/file/', 'wb') as f:
f.write(r)
def called():
conn = http.client.HTTPSConnection('/some/host',
'some port',
'some ssl.Context')
conn.request('GET', '/some/url', {'some': 'headers'})
r = conn.getresponse()
c = r.read()
conn.close()
return c
它通过适当的返回执行正常并写入文件。后者并不理想,因为我需要调用conn.close()
来强制服务器连接终止。
问题:
为什么我不能返回
getresponse()
个对象?
答案 0 :(得分:1)
这是因为在第一种情况下你正在打电话
conn.close()
然后阅读它。