使用中requests
モジュール生の HTTP リクエストを印刷する方法はありますか?
必要なのはヘッダーだけではなく、リクエスト ライン、ヘッダー、コンテンツのプリントアウトです。HTTP リクエストから最終的に何が構築されるかを確認することは可能ですか?
ベストアンサー1
v1.2.3以降リクエストに PreparedRequest オブジェクトが追加されました。ドキュメントによると、「サーバーに送信される正確なバイトが含まれています」。
これを使用して、次のようにリクエストをきれいに印刷することができます。
import requests
req = requests.Request('POST','http://stackoverflow.com',headers={'X-Custom':'Test'},data='a=1&b=2')
prepared = req.prepare()
def pretty_print_POST(req):
"""
At this point it is completely built and ready
to be fired; it is "prepared".
However pay attention at the formatting used in
this function because it is programmed to be pretty
printed and may differ from the actual request.
"""
print('{}\n{}\r\n{}\r\n\r\n{}'.format(
'-----------START-----------',
req.method + ' ' + req.url,
'\r\n'.join('{}: {}'.format(k, v) for k, v in req.headers.items()),
req.body,
))
pretty_print_POST(prepared)
これにより、次のようになります。
-----------START-----------
POST http://stackoverflow.com/
Content-Length: 7
X-Custom: Test
a=1&b=2
次に、実際のリクエストを次のように送信します。
s = requests.Session()
s.send(prepared)
これらのリンクは利用可能な最新のドキュメントへのリンクであるため、内容が変更される場合があります。上級 - 準備されたリクエストそしてAPI - 下位レベルクラス