J'ai Postman (celui qui ne s'ouvre pas dans Chrome) et j'essaie de faire une requête POST en utilisant raw json.
Dans l'onglet Body, j'ai sélectionné "raw" et "JSON (application / json)" avec ce corps:
{
"foo": "bar"
}
Pour l'en-tête j'ai 1, Content-Type: application/json
Du côté PHP, je fais juste print_r($_POST);
pour le moment, et j'obtiens un tableau vide.
Si j'utilise jQuery et que je fais:
$.ajax({
"type": "POST",
"url": "/rest/index.php",
"data": {
"foo": "bar"
}
}).done(function (d) {
console.log(d);
});
J'obtiens comme prévu:
Array
(
[foo] => bar
)
Alors pourquoi ne fonctionne-t-il pas avec Postman?
Captures d'écran du facteur:
et en-tête:
array(1) {["foo"]=> string(3) "bar"}
avec jQuery et toujours un tableau vide avec Postman:array(0) {}
fields
etfoo
ne correspondra pas, donc cela ne fonctionnera pas, je ne sais pas si c'est une faute de frappe, mais assurez-vous qu'ils correspondentRéponses:
Contrairement
jQuery
à pour lire raw,JSON
vous devrez le décoder en PHP.php://input
est un flux en lecture seule qui vous permet de lire des données brutes à partir du corps de la requête.$_POST
est des variables de formulaire, vous devrez passer àform
radiobuttonpostman
puis utiliser:Pour publier brut
json
avecjquery
:la source
Vérifiez simplement l'option JSON dans la liste déroulante à côté de binaire; lorsque vous cliquez sur raw. Cela devrait faire
la source
La réponse de meda est tout à fait légitime, mais quand j'ai copié le code, j'ai eu une erreur!
Quelque part dans le
"php://input"
il y a un caractère invalide (peut-être l'un des guillemets?).Lorsque j'ai tapé le
"php://input"
code manuellement, cela fonctionnait. Il m'a fallu un certain temps pour comprendre!la source
200c 200b
(caractères de largeur nulle) entre le "n" et le "p" dans "input". Je ne sais pas comment il a fini avec ça, mais c'est réglé maintenant.J'étais confronté au même problème, le code suivant a fonctionné pour moi:
la source
Installez l'application native Postman, l'extension Chrome est obsolète. (Le mien s'ouvrait dans sa propre fenêtre mais fonctionnait toujours en tant qu'application Chrome)
la source