Anda perlu tahu apakah REST API yang Anda panggil mendukung GETatau POST, atau kedua metode tersebut. Kode di bawah ini adalah sesuatu yang berfungsi untuk saya, saya memanggil API layanan web saya sendiri, jadi saya sudah tahu apa yang API ambil dan apa yang akan kembali. Ini mendukung keduanya GETdan POSTmetode, sehingga info yang kurang sensitif masuk ke URL (GET), dan info seperti nama pengguna dan kata sandi dikirimkan sebagai POSTvariabel. Juga, semuanya berjalan melalui HTTPSkoneksi.
Di dalam kode API, saya menyandikan larik yang ingin saya kembalikan ke format json, kemudian cukup gunakan perintah PHP echo $my_json_variableuntuk membuat string json itu tersedia untuk klien.
Jadi seperti yang Anda lihat, API saya mengembalikan data json, tetapi Anda perlu tahu (atau melihat data yang dikembalikan untuk mengetahui) apa format respons dari API.
Inilah cara saya terhubung ke API dari sisi klien:
$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, saya juga mencoba menggunakan file_get_contents()metode seperti yang disarankan beberapa pengguna di sini, tapi itu tidak berfungsi dengan baik untuk saya. Saya menemukan curlmetode menjadi lebih cepat dan lebih dapat diandalkan.