0

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

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

但是,这似乎只是无条件地直接打印到外壳。我需要能够将此信息作为字符串或存储在变量中的内容获取,以便仅在引发异常时将其打印出来。

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

4

2 回答 2

1

我会使用requestsHTTP 库。

要获取响应标头,您只需要这段代码:

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'}
于 2012-08-12T12:50:32.367 回答
0

事实证明,诀窍是将 sys.stdout 重定向到 StringIO 对象,然后可以将其内容写入文件或您喜欢的任何内容,因为您可以访问字符串。查看 StringIO.StringIO。

于 2012-08-12T12:36:53.677 回答