
В последнее время достаточно часто сталкиваюсь с ответами различных сервисов в формате JSON
В связи с этим решил написать заметку о том, как получать данные в своём php-скрипте от таких сервисов
PHP не парсит никаких данных на входе, если заголовок, переданный в приложение, отличный от application/x-www-form-urlencoded или multipart/form-data
Для получения данных из ответа с заголовком application/json можно использовать следующий код
$inputData = file_get_contents('php://input'); $data = json_decode($inputData, true);// в массиве $data будут все нужные нам данные, которые пришли в формате JSON
Также можно добавить проверку на входе в приложение на тип входных данных
if ($_SERVER["CONTENT_TYPE"] == 'application/json') { $inputData = file_get_contents('php://input'); $data = json_decode($inputData, true); }
Можно сделать наш скрипт универсальным для любых входных данных. Сделать это достаточно просто
$inputData = file_get_contents('php://input'); if ($_SERVER["CONTENT_TYPE"] == 'application/json') { $data = json_decode($inputData, true); } elseif ($_SERVER["CONTENT_TYPE"] == 'application/x-www-form-urlencoded' || $_SERVER["CONTENT_TYPE"] == 'multipart/form-data' ) { $data = parse_str($inputData); }