Python HttpConnection - 将请求标头写入文件

时间:2012-08-12 12:05:02

标签: python http

我正在尝试在发生错误时记录一些连接信息。使用httplib的HTTPConnection我可以通过将调试级别设置为1来打印出请求标头:

    connection = httplib.HTTPConnection('www.example.com')
    connection.set_debuglevel(1)

但是,这似乎只是在没有条件的情况下直接打印到shell。我需要能够将此信息作为字符串或某些内容存储在变量中,以便我只在抛出异常时将其打印出来。

我想要的具体信息是库正在生成的请求标头。

2 个答案:

答案 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。