我正在尝试在发生错误时记录一些连接信息。使用httplib的HTTPConnection我可以通过将调试级别设置为1来打印出请求标头:
connection = httplib.HTTPConnection('www.example.com')
connection.set_debuglevel(1)
但是,这似乎只是在没有条件的情况下直接打印到shell。我需要能够将此信息作为字符串或某些内容存储在变量中,以便我只在抛出异常时将其打印出来。
我想要的具体信息是库正在生成的请求标头。
答案 0 :(得分:1)
我会使用requests
HTTP库。
要获得响应标头,您只需要这段代码:
import requests
try:
r = requests.get("http://www.example.com")
# Raise an exception in case of "bad"
# status code (non-200 response)
r.raise_for_status()
print r.headers
except Exception as e:
print e.message
输出:
{'connection': 'close',
'content-encoding': 'gzip',
'content-length': '1162',
'content-type': 'text/html; charset=UTF-8',
'date': 'Sun, 12 Aug 2012 12:49:44 GMT',
'last-modified': 'Wed, 09 Feb 2011 17:13:15 GMT',
'server': 'Apache/2.2.3 (CentOS)',
'vary': 'Accept-Encoding'}
答案 1 :(得分:0)
结果诀窍是将sys.stdout重定向到一个StringIO对象,然后可以将其内容写入文件或任何你喜欢的对象,因为你可以找到String。查看StringIO.StringIO。