Chciałbym wysłać żądanie POST, aby przesłać plik do usługi sieciowej (i uzyskać odpowiedź) przy użyciu Pythona. Na przykład, można zrobić następujące żądania POST z curl
:Utwórz żądanie http POST, aby przesłać plik za pomocą pythona urllib/urllib2
curl -F "[email protected]" -F output=json http://jigsaw.w3.org/css-validator/validator
Jak mogę sprawić, że sam wniosek z python urllib/urllib2? Najbliższe do tej pory są następujące:
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)
Mam błąd HTTP 500 z powyższego kodu. Ale ponieważ moje polecenie curl
się powiedzie, musi być coś nie tak z moim pytaniem pythona?
Jestem całkiem nowy w tym temacie i proszę mi wybaczyć, jeśli pytanie rekrutów ma bardzo proste odpowiedzi lub błędy. Z góry dziękuję za wszystkie pomocne!
Nie zapomnij zamknąć pliku 'style.css'? – Vladius
@Vladius Plik zostanie zamknięty automatycznie, ponieważ jest używany jako menedżer kontekstów. Zobacz dokumentację na [the 'with' statement] (https://docs.python.org/2.7/reference/compound_stmts.html#with). – nandhp
Jestem naprawdę nowy dla Pythona. Przeprowadziłem powyższe, z pozoru udane. Czego powinienem się teraz spodziewać? Gdzie mogę sprawdzić, czy działa. – Omar