it-swarm.com.ru

Послать POST данные через сырой 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
)

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


Почтальон скриншоты:

 enter image description here

и заголовок:

 enter image description here

51
smerny

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

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

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

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

foo=bar&foo2=bar2

Чтобы опубликовать необработанные json с jquery:

$.ajax({
    "url": "/rest/index.php",
    'data': JSON.stringify({foo:'bar'}),
    'type': 'POST',
    'contentType': 'application/json'
});
17
meda

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

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

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

7
CoredusK

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

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

4
Neo

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

2
Jaroslav Štreit

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

 skill synon pass json to postman

1
Itachi