Comment prévisualiser les requêtes HTTP brutes en Python à l'aide de Requests\' PreparedRequest ?

Patricia Arquette
Libérer: 2024-10-23 15:46:02
original
825 Les gens l'ont consulté

How to Preview Raw HTTP Requests in Python Using Requests' PreparedRequest?

Impression de requêtes HTTP brutes en Python avec des requêtes

Lorsque vous travaillez avec le module Requêtes, vous pouvez rencontrer des situations dans lesquelles il est avantageux d'inspecter le brut Requête HTTP en cours d'envoi au serveur. Cela inclut non seulement les en-têtes mais également la ligne et le contenu de la requête.

Solution utilisant PreparedRequest :

À partir de la version 1.2.3, Requests a introduit l'objet PreparedRequest. Cet objet représente les « octets exacts qui seront envoyés au serveur », comme documenté ici : https://requests.readthedocs.io/en/latest/advanced/prepared-requests-and-api/

Pour imprimer la requête HTTP brute dans un joli format, vous pouvez exploiter l'objet PreparedRequest comme suit :

<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):
    """
    Formats and prints the prepared request in a readable manner.
    """
    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)

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

a=1&b=2</code>
Copier après la connexion

Cela affichera la ligne de requête, les en-têtes et le corps de la requête dans un format visuellement agréable.

Remarque :Le formatage utilisé dans la fonction Pretty_print_POST est conçu pour des raisons de lisibilité et peut différer légèrement de la demande réelle envoyée.

Une fois que vous avez inspecté la demande préparée, vous pouvez procéder à envoyez la demande réelle à l'aide de la session de demandes comme suit :

<code class="python">s = requests.Session()
s.send(prepared)</code>
Copier après la connexion

Pour des informations plus détaillées sur les fonctionnalités avancées telles que les demandes préparées et l'API, reportez-vous à la documentation des demandes : https://requests.readthedocs.io/ fr/dernier/avancé/requêtes-préparées-et-api/

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!