Отправка почтовых данных через необработанный json с почтальоном


У меня есть почтальон (тот, который не открывается в Chrome), и я пытаюсь выполнить запрос на отправку с использованием необработанного json.

На вкладке "Тело" я выбрал "необработанный" и "JSON (приложение/json)" с этим телом:

{
    "foo": "bar"
}

Для заголовка у меня есть 1, Content-Type: application/json

На стороне PHP я сейчас просто делаю print_r($_POST);, и я получаю пустой массив.


Если я использую jQuery и делаю:

$.ajax({
    "type": "POST",
    "url": "/rest/index.php",
    "data": {
        "foo": "bar"
    }
}).done(function (d) {
    console.log(d);
});

Я получаю, как и ожидалось:

Array
(
    [foo] => bar
)

Так почему же он не работает с Почтальон?


Скриншоты почтальона:

enter image description here

И заголовок:

enter image description here

Author: smerny, 2016-08-18

4 answers

В отличие от jQuery для чтения raw JSON вам нужно будет декодировать его в PHP.

print_r(json_decode(file_get_contents("php://input"), true));

php://input это поток только для чтения, который позволяет считывать необработанные данные из тела запроса.

$_POST это переменные формы, вам нужно будет переключиться на form радиокнопку в postman, затем использовать:

foo=bar&foo2=bar2

Для публикации необработанного json с jquery:

$.ajax({
    "url": "/rest/index.php",
    'data': JSON.stringify({foo:'bar'}),
    'type': 'POST',
    'contentType': 'application/json'
});
 16
Author: meda, 2018-09-10 19:37:07

Ответ Меды полностью законен, но когда я скопировал код, я получил ошибку!

Где-то в "php://input" есть недопустимый символ (может быть, одна из кавычек?).

Когда я набрал код "php://input" вручную, это сработало. Мне потребовалось некоторое время, чтобы понять!

 7
Author: CoredusK, 2017-04-27 09:22:49

Я столкнулся с той же проблемой, следующий код работал для меня

$params = (array) json_decode(file_get_contents('php://input'), TRUE); print_r($params);

 4
Author: Neo, 2017-03-29 05:48:44

Установите собственное приложение Postman, расширение Chrome устарело. (Мой открывался в собственном окне, но все еще работал как приложение Chrome)

 2
Author: Jaroslav Štreit, 2018-06-28 10:17:02