Sen destekleri aradığınız REST API olmadığını bilmek gerekir GETya 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 GETve POSTaz hassas bilgileri girer, böylece yöntemleri URL (GET)ve kullanıcı adı ve şifre gibi bilgileri olarak gönderildiğinden POSTdeğişkenler. Ayrıca, her şey HTTPSbağ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 curlhızlı ve daha güvenilir bir yöntem buldum .