'Send POST data via raw JSON with Postman
I've got Postman (the one that doesn't open in Chrome) and I'm trying to do a POST request using raw JSON.
In the Body tab I have "raw" selected and "JSON (application/json)" with this body:
{
"foo": "bar"
}
For the header I have 1, Content-Type: application/json
On the PHP side I'm just doing print_r($_POST);
for now, and I'm getting an empty array.
If I use jQuery and do:
$.ajax({
"type": "POST",
"url": "/rest/index.php",
"data": {
"foo": "bar"
}
}).done(function (d) {
console.log(d);
});
I'm getting as expected:
Array
(
[foo] => bar
)
So why isn't it working with Postman?
Postman screenshots:
and header:
Solution 1:[1]
Unlike jQuery
in order to read raw JSON
you will need to decode it in PHP.
print_r(json_decode(file_get_contents("php://input"), true));
php://input
is a read-only stream that allows you to read raw data from the request body.
$_POST
is form variables, you will need to switch to form
radiobutton in postman
then use:
foo=bar&foo2=bar2
To post raw json
with jquery
:
$.ajax({
"url": "/rest/index.php",
'data': JSON.stringify({foo:'bar'}),
'type': 'POST',
'contentType': 'application/json'
});
Solution 2:[2]
Solution 3:[3]
meda's answer is completely legit, but when I copied the code I got an error!
Somewhere in the "php://input"
there's an invalid character (maybe one of the quotes?).
When I typed the "php://input"
code manually, it worked.
Took me a while to figure out!
Solution 4:[4]
I was facing the same problem, following code worked for me:
$params = (array) json_decode(file_get_contents('php://input'), TRUE);
print_r($params);
Solution 5:[5]
Solution 6:[6]
Install Postman native app, Chrome extension has been deprecated. (Mine was opening in own window but still ran as Chrome app)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | ahnbizcad |
Solution 2 | Itachi |
Solution 3 | CoredusK |
Solution 4 | finefoot |
Solution 5 | Shojib Flamon |
Solution 6 | Jaroslav Å treit |