POST Requests via Python
-
kann mir jemand helfen - wenn ich z.B. via Insomnia den POST Request unten an https://idoit-test/src/jsonrpc.php schicke, dann klappt das mit dem Server anlegen.
{
"jsonrpc": "2.0",
"method": "cmdb.object.create",
"params": {
"type": "C__OBJTYPE__SERVER",
"title": "Testserver via API",
"apikey": "xxxx"
},
"id": 1
}wenn ich das gleiche mit dem Python Code unten versuche, passiert gar nichts
import urllib.parse
import urllib.requesturl = 'https://idoit-test/src/jsonrpc.php'
values = {'jsonrpc': '2.0', 'method': 'cmdb.object.create', 'params': {'type': 'C__OBJTYPE__SERVER', 'title': 'Testserver via API', 'apikey': 'xxxx'}, 'id': 1}data = urllib.parse.urlencode(values)
req = urllib.request.Request(url, data.encode('utf-8'))
response = urllib.request.urlopen(req)
the_page = response.read()GET Request via Python funktionieren problemlos.
-
Das URL-Encoding sieht für mich falsch aus. Ich würde mal etwas in die Richtung
import json import urllib.request url = 'https://idoit-test/src/jsonrpc.php' values = {'jsonrpc': '2.0', 'method': 'cmdb.object.create', 'params': {'type': 'C__OBJTYPE__SERVER', 'title': 'Testserver via API', 'apikey': 'xxxx'}, 'id': 1} req = urllib.request.Request(url, json.dumps(values).encode('ASCII')) response = urllib.request.urlopen(req) the_page = response.read()
probieren.
-
danke für das Feedback. Deine Version läuft auch fehlerfrei durch, ein Objekt wieder aber leider nicht angelegt
-
Da fehlt wohl noch der
content-type: application/json
header.