Bạn sẽ cần biết API REST mà bạn đang gọi hỗ trợ GET
hoặc POST
hoặc cả hai phương thức. Mã dưới đây là một cái gì đó phù hợp với tôi, tôi đang gọi API dịch vụ web của riêng tôi, vì vậy tôi đã biết API lấy gì và nó sẽ trả về cái gì. Nó hỗ trợ cả hai GET
và POST
phương thức, vì vậy thông tin ít nhạy cảm đi vào URL (GET)
và thông tin như tên người dùng và mật khẩu được gửi dưới dạng POST
biến. Ngoài ra, tất cả mọi thứ đi qua HTTPS
kết nối.
Bên trong mã API, tôi mã hóa một mảng mà tôi muốn trở về định dạng json, sau đó chỉ cần sử dụng lệnh PHP echo $my_json_variable
để làm cho chuỗi json đó có sẵn cho máy khách.
Vì vậy, như bạn có thể thấy, API của tôi trả về dữ liệu json, nhưng bạn cần biết (hoặc nhìn vào dữ liệu được trả về để tìm hiểu) định dạng phản hồi từ API là gì.
Đây là cách tôi kết nối với API từ phía khách hàng:
$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, tôi cũng đã thử sử dụng file_get_contents()
phương pháp như một số người dùng ở đây đã đề xuất, nhưng điều đó không hiệu quả với tôi. Tôi tìm ra curl
phương pháp để nhanh hơn và đáng tin cậy hơn.