Подтвердить что ты не робот

Отправить данные POST через raw json с почтовым агентом

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

На вкладке "Тело" я выбрал "raw" и "JSON (application/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
)

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


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

введите описание изображения здесь

и заголовок:

введите описание изображения здесь

4b9b3361

Ответ 1

В отличие от jQuery, для чтения необработанного 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'
});

Ответ 2

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

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

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

Ответ 3

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

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

Ответ 4

Установите родное приложение Postman, расширение Chrome устарело. (Шахта открывалась в собственном окне, но все еще работала как приложение Chrome)

Ответ 5

Просто выберите опцию JSON из выпадающего списка рядом с двоичным; когда вы нажимаете сырье. Это должно сделать

skill synon pass json to postman