http POST per script senden - wie ??

Hallo alle,
habe heute den ganzen Tag versucht Konfigurationsdaten per http POST an dieses nette Teil zu senden… bisher leider ohne Erfolg.
Laut API geht es mit diesem Befehl hier:

Erlaubt zudem über HTTP POST das Setzen von Geräteeinstellungen.

/config

Gibt die aktuellen Geräteeinstellungen als JSON-Objekt zurück mit dem folgenden Aufbau:

{
  "content": "**verschlüsselt(Gerätekonfiguration in JSON)**"
}

Als Beispiel ist nur was in Python gegeben… wüßte nicht wie ich das in php packen kann :confused:

# Anfrage formulieren und Daten senden
connection.request("POST","/config","request="+encodeMessage('{"Rejection": "50Hz"}'),headers)
contents = connection.getresponse()
connection.close()

Dies ist der Inhalt der geschrickt werden soll ‚{„Rejection“: „50Hz“}‘ als Beispiel incl. der geschweiften Klammern

Könnte mir da jmd weiterhelfen ?

// Generated by curl-to-PHP: http://incarnate.github.io/curl-to-php/
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://192.168.169.170/config');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_payload);

$headers = array();
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);

Wie natürlich die Verschlüsselung des Payloads funktioniert, weiß ich nicht.

danke schon mal, supi :slight_smile:
Verschlüsselung des Payloads hab ich glaube schon vorliegen.

Werde berichten

Hallo tobiasr,
so funktioniert es jetzt:

// Generated by curl-to-PHP: http://incarnate.github.io/curl-to-php/
$ch = curl_init();
$headers = array();
$headers[] = 'Content-type: application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'request='.$data);

$output = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);

Vielen Dank nochmals…

Wie hast du das mit der Verschlüsselung gelöst?

mit dieser Funktion wird verschlüsselt:

function encrypt($msgb64,$password)
{
    $airqpass = $password;
	if (strlen($airqpass) < 32) {
		for ($i = strlen($airqpass); $i < 32; $i++) {
			$airqpass = $airqpass . '0';
		}
	} else {
		if (strlen($airqpass) > 32) {
			$airqpass = substr($airqpass,0,32);
		}
	}

	$key = utf8_encode($airqpass);
	$iv = substr(openssl_random_pseudo_bytes(32),0,16);
	$encrypted = openssl_encrypt($msgb64, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
	return base64_encode($iv . $encrypted);
}