Вы должны знать , если REST API вы вызываете поддерживает GET
или POST
, или оба метода. Приведенный ниже код работает для меня, я называю свой собственный API веб-службы, поэтому я уже знаю, что API берет и что он вернет. Он поддерживает оба метода GET
и POST
методы, поэтому менее важная информация попадает в URL (GET)
, а информация, такая как имя пользователя и пароль, представляется в виде POST
переменных. Кроме того, все идет по HTTPS
связи.
Внутри кода API я кодирую массив, который хочу вернуть, в формате json, а затем просто использую команду PHP, echo $my_json_variable
чтобы сделать эту строку json доступной для клиента.
Итак, как вы можете видеть, мой API возвращает данные json, но вам нужно знать (или посмотреть на возвращенные данные, чтобы выяснить), в каком формате находится ответ от API.
Вот как я подключаюсь к API со стороны клиента:
$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;
}
Кстати, я также пытался использовать file_get_contents()
метод, как предлагали некоторые из пользователей, но он мне не помог. Я обнаружил, что curl
метод быстрее и надежнее.