Domanda

In Python 2, è stato possibile ottenere l'output di debug da urllib facendo

import httplib
import urllib
httplib.HTTPConnection.debuglevel = 1
response = urllib.urlopen('http://example.com').read()

Tuttavia, in python 3 sembra che questo è stato spostato a

http.client.HTTPConnection.set_debuglevel(level)

Comunque, sto usando urllib non http.client direttamente. Come posso impostarlo in modo che la mia esposizione richiesta HTTP le informazioni di debug in questo modo?

Ecco quello che ho "m utilizzando finora. Qual è il modo migliore di procedere, se voglio essere in grado di ottenere le informazioni di debug?

#Request Login page
cookiejar = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookiejar))
request = urllib.request.Request(options.uri)
add_std_headers(request)
response = opener.open(request)
response_string = response.read().decode("utf8")
# ...
È stato utile?

Soluzione

Avevi ragione la prima volta. Si può semplicemente aggiungere il http.client.HTTPConnection.debuglevel = 1 linea all'inizio del file per attivare il debug HTTP applicazione a livello. urllib.request utilizza ancora http.client.

Sembra che ci sia anche un modo per impostare il debuglevel per un singolo gestore (con la creazione di urllib.request.HTTPHandler(debuglevel=1) e la costruzione di un apriscatole in questo), ma sulla mia installazione di python3 (3.0b3) In realtà non è implementato. Immagino che è cambiato nelle versioni più recenti!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top