Kaip matyti visą „HTTP“ užklausą, kurią atsiuntė „Python“ programa?

Mano atveju naudoju requests biblioteką, kad galėčiau paskambinti PayPal API per HTTPS. Deja, gaunu pranešimą iš „PayPal“, o „PayPal“ pagalba negali suprasti, kas yra klaida arba kas ją sukelia. Jie nori, kad „prašau pateikti visą užklausą, įskaitant antraštes“.

Kaip tai padaryti?

146
14 мая '12 в 21:03 2012-05-14 21:03 Chris B. yra nustatytas gegužės 14, 12 d. 21:03 2012-05-14 21:03
@ 4 atsakymai

Paprastas metodas: įgalinkite prisijungimą prie paskutinių užklausų (1.x ir naujesnės versijos).

http.client naudoja „ http.client modulio http.client ir logging norėdami valdyti http.client registravimą, kaip aprašyta čia .

Demonstravimas

Kodas paimtas iš susijusių dokumentų:

 import requests import logging # These two lines enable debugging at httplib level (requests->urllib3->http.client) # You will see the REQUEST, including HEADERS and DATA, and RESPONSE with HEADERS but without DATA. # The only thing missing will be the response.body which is not logged. try: import http.client as http_client except ImportError: # Python 2 import httplib as http_client http_client.HTTPConnection.debuglevel = 1 # You must initialize logging, otherwise you'll not see debug output. logging.basicConfig() logging.getLogger().setLevel(logging.DEBUG) requests_log = logging.getLogger("requests.packages.urllib3") requests_log.setLevel(logging.DEBUG) requests_log.propagate = True requests.get('https://httpbin.org/headers') 

Mėginio išėjimas

 $ python requests-logging.py INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): httpbin.org send: 'GET /headers HTTP/1.1\r\nHost: httpbin.org\r\nAccept-Encoding: gzip, deflate, compress\r\nAccept: **', 'Accept-Encoding': 'identity, deflate, compress, gzip', 'Authorization': u'Basic dXNlcjpwYXNz', 'User-Agent': 'python-requests/0.12.1'} 

Tada r.request.data turi r.request.data kaip kūną. Tai galite konvertuoti naudodami urllib.urlencode jei jie nori:

 import urllib b = r.request.data encoded_body = urllib.urlencode(b) 
77
14 мая '12 в 21:10 2012-05-14 21:10 Atsakymas suteiktas Skylar Saveland gegužės 14 d., 12 val. 9:10 val. 2012-05-14 21:10

Jei naudojate Python 2.x, pabandykite įdiegti urllib2 . Ji turėtų spausdinti antraštes, nors jums gali tekti jį sujungti su kitais atradėjais, kuriuos naudojate, kad pasiektumėte HTTPS.

 import urllib2 urllib2.install_opener(urllib2.build_opener(urllib2.HTTPHandler(debuglevel=1))) urllib2.urlopen(url) 
4
14 мая '12 в 23:46 2012-05-14 23:46 atsakymas pateikiamas Kafonekui gegužės 14 d., 12 val. 11:46 2012-05-14 23:46

verbose konfigūracijos parinktis gali leisti matyti, ką norite. dokumente .

PASTABA. . Skaitykite toliau pateikiamas pastabas. Išsamios konfigūracijos parinktys, atrodo, nebėra prieinamos.

2
15 мая '12 в 5:51 2012-05-15 05:51 atsakymą Bruno pateikė gegužės 15 d. 12 val. 5:51 2012-05-15 05:51

Kiti klausimai apie „ žymas arba Ask a Question