Tendrá que saber si la API REST que está llamando soportes GETo POST, o ambos métodos. El código a continuación es algo que funciona para mí, estoy llamando a mi propia API de servicio web, por lo que ya sé qué toma la API y qué devolverá. Es compatible con ambos GETy con los POSTmétodos, por lo que la información menos sensible entra en el URL (GET), y la información como nombre de usuario y contraseña se envía como POSTvariables. Además, todo pasa por la HTTPSconexión.
Dentro del código API, codifico una matriz que quiero devolver al formato json, luego simplemente uso el comando PHP echo $my_json_variablepara que esa cadena json esté disponible para el cliente.
Como puede ver, mi API devuelve datos json, pero necesita saber (o mirar los datos devueltos para averiguar) en qué formato está la respuesta de la API.
Así es como me conecto a la API desde el lado del cliente:
$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;
}
Por cierto, también traté de usar el file_get_contents()método que sugirieron algunos de los usuarios aquí, pero eso no funciona bien para mí. Descubrí que el curlmétodo es más rápido y más confiable.