Sembra che urllib2 invii la richiesta HTTP/1.1 per impostazione predefinita?Come inviare una richiesta HTTP/1.0 tramite urllib2?
risposta
urllib2 utilizza httplib sotto il cofano per effettuare la connessione. Puoi cambiarlo in http 1.0 come mostrato di seguito. Ho incluso il mio log di accesso server Apache per mostrare come la connessione HTTP deve passare alla 1.0
codice
import urllib2, httplib
httplib.HTTPConnection._http_vsn = 10
httplib.HTTPConnection._http_vsn_str = 'HTTP/1.0'
print urllib2.urlopen('http://localhost/').read()
access.log
127.0.0.1 - - [01/Dec/2012:09:10:27 +0300] "GET/HTTP/1.1" 200 454 "-" "Python-urllib/2.7"
127.0.0.1 - - [01/Dec/2012:09:16:32 +0300] "GET/HTTP/1.0" 200 454 "-" "Python-urllib/2.7"
Ho finalmente capito definendo il mio gestore, ma la tua soluzione è molto più semplice, grazie :) – houqp
per utenti python 3, httplib è sostituito da http.client e tutto il resto è è lo stesso della meravigliosa soluzione di Marwan. –
Per evitare scimmia-patching httplib
(modifica globale), è possibile creare sottoclasse HTTPConnection
e definire il proprio gestore http:
#!/usr/bin/env python
try:
from httplib import HTTPConnection
from urllib2 import HTTPHandler, build_opener
except ImportError: # Python 3
from http.client import HTTPConnection
from urllib.request import HTTPHandler, build_opener
class HTTP10Connection(HTTPConnection):
_http_vsn = 10
_http_vsn_str = "HTTP/1.0"
class HTTP10Handler(HTTPHandler):
def http_open(self, req):
return self.do_open(HTTP10Connection, req)
opener = build_opener(HTTP10Handler)
print(opener.open('http://stackoverflow.com/q/13656757').read()[:100])
- 1. python: urllib2 come inviare cookie con richiesta urlopen
- 2. Come inviare una richiesta HTTP utilizzando Telnet
- 3. Come inviare una richiesta GET da PHP?
- 4. Come inviare correttamente una richiesta PATCH
- 5. come inviare una richiesta URL asincrona?
- 6. Come inviare una richiesta POST in Golang?
- 7. Come inviare una richiesta SOAP in PHP
- 8. Come inviare una stringa tramite PostMessage?
- 9. Come inviare dati binari tramite una richiesta HTTP utilizzando una gemma Ruby?
- 10. utilizzando python urllib2 per inviare richiesta POST e ottenere la risposta
- 11. Come inviare richiesta utilizzando RestSharp
- 12. Come inviare la richiesta POST?
- 13. Come inviare una richiesta di arricciatura con certificato pem tramite PHP?
- 14. Come inviare xml tramite una richiesta HTTP e riceverlo utilizzando ASP.NET MVC?
- 15. Come inviare un messaggio immediato tramite SIP
- 16. Come inviare una richiesta HTTP con un parametro di intestazione?
- 17. Come inviare email tramite Vetro
- 18. Come posso inviare un file in una richiesta POST?
- 19. Come inviare una richiesta HTTPS attraverso un proxy in Java?
- 20. Come effettuare richieste urllib2 tramite Tor in Python?
- 21. Retrofit: come inviare una richiesta POST con campi costanti?
- 22. Come inviare una richiesta multipart utilizzando Volley senza HttpEntity?
- 23. Come inviare una richiesta di pull da un repository clonato?
- 24. Come inviare una richiesta getForObject con parametri Spring MVC
- 25. Come inviare una richiesta di oauth con python-oauth2
- 26. come inviare una richiesta http dalla riga di comando
- 27. Come inviare parametri a Iframe con una richiesta HTTP POST
- 28. Come inviare una richiesta xml-rpc in python?
- 29. Come posso inviare una richiesta HTTP/2 POST in PHP
- 30. come inviare una richiesta HTTPS GET in C#
C'è qualche ragione particolare per utilizzare HTTP 1.0 su HTTP 1.1? –
Sono anche curioso del perché della necessità di HTTP 1.0 –
Sto scrivendo uno script di test per uno dei miei stupidi compiti, che utilizza solo HTTP 1.0. (lo script di test non fa parte dei compiti) – houqp