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 に答える