2017-09-28 3 views
0

J'essaye de POST json données à partir de la ligne de commande avec curl à un script PHP. Mais je ne peux pas comprendre comment recevoir le JSON affiché sur le site du serveur (php)cmd curl json au script PHP

C'est ce que je l'ai essayé jusqu'à présent:

commandline:

curl -H "Content-Type: application/json" -X POST -i -d '{"token":"xyz"}' http://localhost/api/users.php 

users.php

//Receive the RAW post data. 
$content = file_get_contents("php://input"); 
echo $content; 

// try to decode json 
$decoded = json_decode($content); 

if($decoded){ 
    echo "success"; 
    echo $decoded['token']; 
} 
else{ 
    echo "failed"; 
} 

Le résultat que je reçois est:

'{token:xyz}' 
failed 

J'ai aussi essayé d'échapper à la "dans l'appel boucle comme:

curl -H "Content-Type: application/json" -X POST -i -d '{\"token\":\"xyz\"}' http://localhost/api/users.php 

mais je reçois presque le même résultat:

'{"token":"xyz"}' 
failed 

Donc, mon problème est que le script php ne parvient pas à convertir les données json reçues.

Qu'est-ce que je fais mal?

EDIT (Résolu):

commande curl Appel cmd avec double guillemets et citations entre les deux:

curl -H "Content-Type: application/json" -X POST -i -d "{\"token\":\"xyz\"}" http://localhost/api/users.php 

Répondre

1

Semble ok, mais après avoir testé votre exemple, il semble fonctionner que si Je mets des guillemets autour des données post. Essayez-le.

+0

parfait merci! avec double qoutes autour et échapper les citations entre travaillé :-) essayé heures obtenir ce fonctionnement ... – Biba