Dovrai sapere se l'API REST che stai chiamando supporta GET
o POST
o entrambi i metodi. Il codice qui sotto è qualcosa che funziona per me, sto chiamando la mia API del servizio web, quindi so già cosa prende l'API e cosa restituirà. Supporta entrambi GET
e POST
metodi, quindi le informazioni meno sensibili vanno in URL (GET)
, e le informazioni come nome utente e password vengono inviate come POST
variabili. Inoltre, tutto va oltre la HTTPS
connessione.
All'interno del codice API, codifico un array che voglio tornare nel formato json, quindi uso semplicemente il comando PHP echo $my_json_variable
per rendere quella stringa json disponibile al client.
Come puoi vedere, la mia API restituisce dati json, ma devi sapere (o guardare i dati restituiti per scoprire) in quale formato è la risposta dall'API.
Ecco come mi collego all'API dal lato client:
$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;
}
A proposito, ho anche provato a usare il file_get_contents()
metodo come suggerito da alcuni degli utenti, ma non funziona bene per me. Ho scoperto che il curl
metodo è più veloce e più affidabile.