ursus contionabundo: Beispiel für API Schnittstelle

Beitrag lesen

Alles was curl kann und hier wichtig ist, kann PHP auch mit dem Filesystemfunktionen (nebst Stream-Context), inklusive andere HTTP-Methoden als GET verwenden sowie Header und Payload mitschicken. Es ist hier also keine Frage der technischen Möglichkeiten.

Tut mir leid, aber ein paar Kleinigkeiten habe ich bei den Filesystemfunktionen (nebst Stream-Context) zumindest nicht gefunden. Die Fehlerauswertungsmöglichkeiten (und wir propagieren hier immer wieder, die Fehler auszuwerten) sind offenbar besch…eiden.

<?php
// erzeuge einen neuen cURL-Handle
$ch = curl_init();

// setze die URL und andere Optionen (Auswahl durch Kommentieren/Aktivieren):
$dummy = curl_setopt( $ch, CURLOPT_URL, "https://home.fastix.org/Tests/sysview.api.php?q=TEMP_BANANA_PI,UPTIME,LOAD" );
#$dummy = curl_setopt( $ch, CURLOPT_URL, "https://home.fastix.org/Error404.php" );
#$dummy = curl_setopt( $ch, CURLOPT_URL, "https://gibtesnicht/" );
#$dummy = curl_setopt( $ch, CURLOPT_URL, "http://home.fastix.org/Tests/sysview.api.php?q=TEMP_BANANA_PI,UPTIME,LOAD" );

$dummy = curl_setopt( $ch, CURLOPT_HEADER, 0 );
// Muss gesetzt werden, damit der Payload in die Variable geschrieben werden kann - Sonst erfolgt Ausgabe von 1 (Erfolg) oder 0 (Fehler).
$dummy = curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );

// führe die Aktion aus und gib die Daten an den Browser weiter
$result = curl_exec( $ch );

header('Content-Type: text/plain; charset=utf-8');
	
if ( $errno = curl_errno( $ch ) ) {
		echo "==============================================================\n";
		$error_message = curl_strerror( $errno );
		echo "Error:  ({$errno}):\n {$error_message}";
		echo "\n==============================================================\n";
}
echo "==============================================================\n";
print_r( curl_getinfo( $ch ) );
echo "\n";

$httpResponceCode = curl_getinfo( $ch, CURLINFO_RESPONSE_CODE );

if ( 200 == $httpResponceCode ) {
	echo "==============================================================\n";
	echo "EMPFANGENE DATEN:\n";
	echo "==============================================================\n";
	// Der Einfachheit halber decodiere JSON und gebe die Daten aus:
	print_r ( json_decode( $result ) );
	echo "==============================================================\n";
} elseif ( 0 == $httpResponceCode ) {	
	echo "==============================================================\n";
	echo "DER SERVER IST NICHT ERREICHBAR ODER DIE DNS-AUFLÖSUNG SCHLUG FEHL.\n";
	echo "==============================================================\n";
} elseif ( 301 == $httpResponceCode or 302 == $httpReturnCode ) {
	echo "==============================================================\n";
	$redirectURL = curl_getinfo( $ch, CURLINFO_REDIRECT_URL );
	echo "EMPFANG SCHLUG FEHL. REDIRECT MIT CODE {$httpResponceCode} zu {$redirectURL} \n";
	echo "==============================================================\n";	
} else {
	echo "==============================================================\n";
	echo "EMPFANG SCHLUG FEHL. STATUSCODE WAR {$httpResponceCode}\n";
	echo "==============================================================\n";
}	
	
// schließe den cURL-Handle und gib die Systemresourcen frei
$dummy = curl_close( $ch );