J'ai Postman (celui qui ne s'ouvre pas dans Chrome) et j'essaie de faire une requête POST en utilisant du JSON brut.
Dans l'onglet Corps, 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é de PHP, je fais juste print_r($_POST);
pour l'instant, et j'obtiens un tableau vide.
Si j'utilise jQuery et fais :
$.ajax({
"type": "POST",
"url": "/rest/index.php",
"data": {
"foo": "bar"
}
}).done(function (d) {
console.log(d);
});
Je reçois comme prévu :
Array
(
[foo] => bar
)
Alors pourquoi ça ne marche pas avec Postman ?
Captures d'écran de Postman :
et l'en-tête :
0 votes
Essayez de remplacer $_REQUEST par $_POST et var_dump() par print_r().
0 votes
@Deep je reçois
array(1) {["foo"]=> string(3) "bar"}
avec jQuery et toujours un tableau vide avec Postman :array(0) {}
0 votes
Donc le facteur n'envoie pas de demande
0 votes
@smerny dans votre message
fields
yfoo
ne correspondront pas, donc ça ne marchera pas. Je ne sais pas si c'est une faute de frappe, mais assurez-vous qu'ils correspondent.0 votes
@meda, c'est vrai que c'était une faute de frappe, mais si j'avais des champs, ils auraient quand même dû être affichés dans le vidage de la variable $_REQUEST ou $_POST.
0 votes
@smerny alors comment pouvons-nous résoudre le problème, vous avez une capture d'écran.
0 votes
@meda - capture d'écran postée
0 votes
@smerny try
print_r(file_get_contents("php://input"));
parce que vous envoyez du json brut.print_r(json_decode(file_get_contents("php://input"), true));
0 votes
@meda, intéressant... cela me donne
{ "foo": "bar"}
avec Postman maintenant... etfoo=bar
avec jQuery. J'ai vraiment besoin qu'il me donne la même chose aux deux endroits... Postman est vraiment juste pour les tests0 votes
Laissez-nous continuer cette discussion dans le chat .