Rohe HTTP-Anfragen mit Python-Anfragen drucken
Beim Arbeiten mit dem Anfragemodul kann es erforderlich sein, die rohen, detaillierten Informationen von anzuzeigen eine HTTP-Anfrage, die über die Header hinausgeht. In diesem Artikel wird erläutert, wie Sie die vollständige HTTP-Anfrage ausdrucken, einschließlich der Anforderungszeile, Header und Inhalt.
Lösung: Verwenden des PreparedRequest-Objekts
Seit Version 1.2.3 Das Anforderungsmodul führte das PreparedRequest-Objekt ein. Dieses Objekt stellt die genauen Bytes dar, die an den Server gesendet werden. Durch die Verwendung dieses Objekts ist es möglich, eine Anfrage wie folgt hübsch zu drucken:
<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>
Dieser Code druckt die vollständige HTTP-Anfrage in einem für Menschen lesbaren Format:
-----------START----------- POST http://stackoverflow.com/ Content-Length: 7 X-Custom: Test a=1&b=2
The Das PreparedRequest-Objekt bietet einen detaillierten Blick auf die erstellte HTTP-Anfrage, was zum Debuggen oder Analysieren des Datenverkehrs nützlich sein kann.
Um die Anfrage tatsächlich zu senden, können Sie den folgenden Code verwenden:
<code class="python">s = requests.Session() s.send(prepared)</code>
Das obige ist der detaillierte Inhalt vonWie drucke ich rohe HTTP-Anfragen mit Python-Anfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!