Sie müssen wissen, ob die REST-API, die Sie aufrufen, Folgendes unterstützt GET
o POST
oder beide Methoden. Der folgende Code ist etwas, das für mich funktioniert, ich rufe meine eigene Webdienst-API auf, so dass ich bereits weiß, was die API benötigt und was sie zurückgibt. Er unterstützt sowohl GET
y POST
Methoden, so dass die weniger sensiblen Informationen in die URL (GET)
und die Informationen wie Benutzername und Kennwort werden übermittelt als POST
Variablen. Außerdem geht alles über die HTTPS
Verbindung.
Innerhalb des API-Codes kodiere ich ein Array, das ich im json-Format zurückgeben möchte, und verwende dann einfach den PHP-Befehl echo $my_json_variable
um die json-Zeichenkette für den Client verfügbar zu machen.
Wie Sie also sehen können, gibt meine API json-Daten zurück, aber Sie müssen wissen (oder sich die zurückgegebenen Daten ansehen, um herauszufinden), in welchem Format die Antwort der API vorliegt.
So stelle ich die Verbindung zur API von der Client-Seite aus her:
$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, ich habe auch versucht, die file_get_contents()
Methode, wie einige der Benutzer hier vorgeschlagen haben, aber das hat bei mir nicht gut funktioniert. Ich fand heraus, dass die curl
Methode schneller und zuverlässiger zu sein.