Você precisará saber se a API REST que você está chamando suporta GET
ou POST
ou ambos os métodos. O código abaixo é algo que funciona para mim, estou chamando minha própria API de serviço da web, então já sei o que a API precisa e o que ela retornará. Ele suporta os métodos GET
e POST
, para que as informações menos sensíveis sejam inseridas no URL (GET)
e as informações como nome de usuário e senha sejam enviadas como POST
variáveis. Além disso, tudo passa pela HTTPS
conexão.
Dentro do código da API, codifico uma matriz que quero retornar para o formato json e, em seguida, basta usar o comando PHP echo $my_json_variable
para tornar essa cadeia json disponível para o cliente.
Como você pode ver, minha API retorna dados json, mas você precisa saber (ou examinar os dados retornados para descobrir) em qual formato está a resposta da API.
É assim que eu me conecto à API do lado do 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;
}
BTW, eu também tentei usar o file_get_contents()
método como alguns dos usuários sugeriram aqui, mas isso não funcionou bem para mim. Descobri que o curl
método era mais rápido e mais confiável.