Sen destekleri aradığınız REST API olmadığını bilmek gerekir GET
ya POST
, ya her iki yöntem. Aşağıdaki kod benim için çalışan bir şey, kendi web hizmeti API çağırıyorum, bu yüzden zaten API ne alır ve ne döneceğini biliyorum. Hem destekler GET
ve POST
az hassas bilgileri girer, böylece yöntemleri URL (GET)
ve kullanıcı adı ve şifre gibi bilgileri olarak gönderildiğinden POST
değişkenler. Ayrıca, her şey HTTPS
bağlantı üzerinden geçer .
API kodunun içinde, json formatına dönmek istediğim bir diziyi kodluyorum, sonra sadece PHP komutunu kullanıyorum echo $my_json_variable
json dizesini istemciye sunmak için .
Gördüğünüz gibi, API'm json verilerini döndürüyor, ancak API'dan yanıtın hangi formatta olduğunu bilmeniz (veya döndürülen verilere bakmanız) gerekiyor.
İstemci tarafından API'ye şu şekilde bağlanırım:
$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, ben de file_get_contents()
burada bazı kullanıcıların önerdiği gibi yöntemi kullanmaya çalıştım , ama bu benim için iyi çalışmıyor. Daha curl
hızlı ve daha güvenilir bir yöntem buldum .