Vorrei fare una richiesta POST per caricare un file su un servizio web (e ottenere risposta) usando python. Ad esempio, posso fare la seguente richiesta POST con curl
:Effettuare una richiesta HTTP POST per caricare un file usando python urllib/urllib2
curl -F "[email protected]" -F output=json http://jigsaw.w3.org/css-validator/validator
Come posso fare la stessa richiesta con python urllib/urllib2? Il più vicino che ho ottenuto finora è il seguente:
with open("style.css", 'r') as f:
content = f.read()
post_data = {"file": content, "output": "json"}
request = urllib2.Request("http://jigsaw.w3.org/css-validator/validator", \
data=urllib.urlencode(post_data))
response = urllib2.urlopen(request)
Ho ricevuto un errore HTTP 500 dal codice sopra. Ma dal momento che il mio comando curl
ha esito positivo, deve essere qualcosa di sbagliato con la mia richiesta python?
Sono abbastanza nuovo su questo argomento e ti prego di perdonarmi se la domanda del principiante ha risposte o errori molto semplici. Grazie in anticipo per tutti i tuoi aiuti!
Non dimenticare di chiudere il file 'style.css'? – Vladius
@Vladius Il file verrà chiuso automaticamente perché viene utilizzato come gestore di contesto. Vedi la documentazione su [la dichiarazione 'with'] (https://docs.python.org/2.7/reference/compound_stmts.html#with). – nandhp
Im davvero nuovo per Python. Ho eseguito quanto sopra, apparentemente di successo. Cosa dovrei aspettarmi ora? Dove posso verificare che funzioni. – Omar