Hallo,
ich möchte gerne mit Curl ein Action mit der dann aufzurufenden Url erstellen.
Wenn ich Curl mit folgender URL (GET-Parameter) ausführe klappt es:
http://<Shelly-IP>/rpc/Webhook.Create?id=0&cid=0&name=Action-Name&enable=true&event=switch.on&condition=null&repeat_period=0&urls=["https://meine-domain.de"]
Nun würde ich die Parameter gerne mit Post übertragen (Json-Array), was leider nicht klappt:
Code
$url = "http://$shelly_ip/rpc";
$data = array(
"id" => 0,
"method" => "Webhook.Create",
"params" => array(
"cid" => 0, // Client ID, kann eine beliebige Zahl sein
"enable" => true,
"name" => "Action-Name",
"event" => "Switch.on",
"urls" => array("https://meine-domain.de")
)
);
$json_data = json_encode($data);
$ch = curl_init($url);
// cURL Optionen setzen
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($json_data)
));
// Ausführung der Anfrage
$response = curl_exec($ch);
// Fehlerbehandlung
if (curl_errno($ch)) {
echo 'cURL Error: ' . curl_error($ch);
} else {
echo "Shelly API Response: " . $response;
}
// cURL schließen
curl_close($ch);
Alles anzeigen
Kann mir bitte jemand sagen, warum das Beispiel lediglich einen Bad-Request ergibt?