ホームページ  >  記事  >  バックエンド開発  >  Python リクエストを使用して生の HTTP リクエストを出力するにはどうすればよいですか?

Python リクエストを使用して生の HTTP リクエストを出力するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-23 12:19:01248ブラウズ

How to Print Raw HTTP Requests with Python Requests?

Python リクエストを使用した生の HTTP リクエストの出力

リクエスト モジュールを使用する場合、生の詳細情報を表示する必要がある場合があります。ヘッダーだけを超えた HTTP リクエスト。この記事では、リクエスト行、ヘッダー、コンテンツを含む完全な HTTP リクエストを出力する方法について説明します。

解決策: PreparedRequest オブジェクトの使用

バージョン 1.2.3 以降、requests モジュールは PreparedRequest オブジェクトを導入しました。このオブジェクトは、サーバーに送信される正確なバイトを表します。このオブジェクトを使用すると、次のようにリクエストを整形して出力できます。

<code class="python">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):
    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)</code>

このコードは、完全な HTTP リクエストを人間が判読できる形式で出力します。

-----------START-----------
POST http://stackoverflow.com/
Content-Length: 7
X-Custom: Test

a=1&b=2

PreparedRequest オブジェクトは、構築された HTTP リクエストの詳細を提供します。これは、トラフィックのデバッグや分析に役立ちます。

実際にリクエストを送信するには、次のコードを使用できます。

<code class="python">s = requests.Session()
s.send(prepared)</code>

以上がPython リクエストを使用して生の HTTP リクエストを出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。