Das Senden eines JSON POST mit urllib2 führt zu HTTP 422

Ich habe ein Problem beim Senden einer JSON-Anfrage an eine API. Ich habe Applikationstyp-Header hinzugefügt, obwohl die API immer noch mit HTTP 422 antwortet. Die JSON-Dateidaten sind gültig, über jsonlint überprüft.

post_config = urllib2.Request(config_url) post_config.add_header('AUTHORIZATION', 'Token token=hash') post_config.add_header('Content-Type', 'application/json') post_data = json.dumps(post_data) print post_data >>{"type": "numeric", "instance_id": "e0140", "name": "name0140", "uid": "970ebb1b2549b4dd5254", "instance_type": "Recommended", "power": "high"} send = urllib2.urlopen(post_config, post_data) 

Ergebnisse in:

 File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 558, in http_error_default raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) urllib2.HTTPError: HTTP Error 422: Unprocessable Entity 

One Solution collect form web for “Das Senden eines JSON POST mit urllib2 führt zu HTTP 422”

Versuchen Sie, das Anforderungsmodul zu verwenden und sehen Sie, ob Sie immer noch die gleiche Antwort bekommen.

Snippet-Beispiel, wie man die Nutzlast an einen REST-Endpunkt weitergibt

 import requests import json url = 'http://example.com/endpoint' headers = {'Content-type': 'application/json'} data = json.dumps(post_data) print(data) r = requests.post(url, data=json.dumps(payload),headers=headers) print(r.status_code) 
Python ist die beste Programmiersprache der Welt.