Content-type: application/json не поддерживается?

Обсуждение проблем в работе программного комплекса
Iworb
Сообщения: 11
Зарегистрирован:
29 авг 2017, 09:56

Content-type: application/json не поддерживается?

Iworb » 06 сен 2017, 12:55

Собственно, столкнулся с тем, что при отправке запроса на сервер с типом application/json серверная часть его не распознает: Request payload игнорируется и тот json, что в нем записан, не попадает в переменные ни $_POST, ни $_REQUEST.
Для примера можно создать локальный домен с index.php следующего вида:
<?php
echo var_dump($_POST);
echo var_dump($_REQUEST);
и послать туда POST запрос с данным заголовком и телом, к примеру
{"a":2}
Для POST запроса использовал Postman, но думаю, что можно и через консоль в браузере повторить его.
Аватара пользователя
Ink0gnit0
Сообщения: 86
Зарегистрирован:
17 мар 2013, 21:16

Re: Content-type: application/json не поддерживается?

Ink0gnit0 » 06 сен 2017, 16:23

Iworb,
<?php
$request = file_get_contents("php://input");
print_r(isset($request ) ? $request  : 'Request  is empty!');
или
$_POST = json_decode(file_get_contents('php://input'), true);
print_r(!empty($_POST) ? $_POST : '$_POST array is empty!');
Iworb
Сообщения: 11
Зарегистрирован:
29 авг 2017, 09:56

Re: Content-type: application/json не поддерживается?

Iworb » 06 сен 2017, 16:41

Интересно. Даже не подозревал о существовании такого потока, спасибо.
Действительно payload попадает туда. Собственно, такой тип контента не является нативным и не может быть распознан автоматически?
Аватара пользователя
Ink0gnit0
Сообщения: 86
Зарегистрирован:
17 мар 2013, 21:16

Re: Content-type: application/json не поддерживается?

Ink0gnit0 » 06 сен 2017, 16:46

Увы, нет. Чтобы массив $_POST был заполнен, Content-Type при отправке должен быть application/x-www-form-urlencoded или multipart/form-data.
Iworb
Сообщения: 11
Зарегистрирован:
29 авг 2017, 09:56

Re: Content-type: application/json не поддерживается?

Iworb » 06 сен 2017, 16:55

Доступно. Спасибо, буду от этого отталкиваться.
Ответить