Sie müssen wissen, ob die von Ihnen aufgerufene REST-API GET
oder POST
oder beide Methoden unterstützt. Der folgende Code funktioniert für mich. Ich rufe meine eigene Webdienst-API auf, sodass ich bereits weiß, was die API benötigt und was sie zurückgibt. Es unterstützt sowohl GET
als auch POST
Methoden, so dass die weniger vertraulichen Informationen in die gehen URL (GET)
und die Informationen wie Benutzername und Passwort als POST
Variablen übergeben werden. Auch geht alles über die HTTPS
Verbindung.
Innerhalb des API-Codes echo $my_json_variable
codiere ich ein Array, das ich in das JSON-Format zurückgeben möchte, und verwende dann einfach den PHP-Befehl , um diese JSON-Zeichenfolge für den Client verfügbar zu machen.
Wie Sie sehen können, gibt meine API JSON-Daten zurück, aber Sie müssen wissen (oder die zurückgegebenen Daten überprüfen, um herauszufinden), in welchem Format die Antwort von der API vorliegt.
So verbinde ich mich von der Clientseite aus mit der API:
$processed = FALSE;
$ERROR_MESSAGE = '';
// ************* Call API:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.myapi.com/api.php?format=json&action=subscribe&email=" . $email_to_subscribe);
curl_setopt($ch, CURLOPT_POST, 1);// set post data to true
curl_setopt($ch, CURLOPT_POSTFIELDS,"username=myname&password=mypass"); // post data
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($ch);
curl_close ($ch);
// returned json string will look like this: {"code":1,"data":"OK"}
// "code" may contain an error code and "data" may contain error string instead of "OK"
$obj = json_decode($json);
if ($obj->{'code'} == '1')
{
$processed = TRUE;
}else{
$ERROR_MESSAGE = $obj->{'data'};
}
...
if (!$processed && $ERROR_MESSAGE != '') {
echo $ERROR_MESSAGE;
}
Übrigens habe ich auch versucht, die file_get_contents()
Methode zu verwenden , wie einige der Benutzer hier vorgeschlagen haben, aber das funktioniert bei mir nicht gut. Ich fand heraus, dass die curl
Methode schneller und zuverlässiger ist.