web-dev-qa-db-fra.com

POST JSON sur CURL avec authentification de base

J'utilise Curl à partir de la ligne de commande pour déboguer une petite API Web sur laquelle je travaille. L'API Web attend une authentification de base et un objet JSON en entrée (POST). Actuellement, ces authentifications de base fonctionnent bien:

curl -i --user validuser:70e12a10-83c7-11e0-9d78-0800200c9a65 http://example.com/api.php

mais je veux également envoyer un objet JSON comme une demande POST:

curl -i --user validuser:70e12a10-83c7-11e0-9d78-0800200c9a65 -X POST -d '{"person":{"name":"bob"}}' http://example.com/api.php

Je reçois une réponse 400 Bad Request avec la commande ci-dessus, des idées sur la façon de regrouper un objet json dans cette demande POST?

27
2bard

Essayez-le avec:

curl -i --user validuser:70e12a10-83c7-11e0-9d78-0800200c9a65 -H "Content-Type: application/json" -H "Accept: application/json" -X POST -d '{"person":{"name":"bob"}}' http://mysite.com/api.php

J'ai supprimé le json= bit dans le contenu du corps.

Alternativement, cet article peut être utile: Comment publier JSON sur PHP avec curl

55
Jits
curl --request POST \
  --url http://Host/api/content/ \
  --header 'authorization: Basic Esdfkjhsdft4934hdfksjdf'
3
4F2E4A2E

Ne pas utiliser

$person = file_get_contents("php://input");

utilisez plutôt

$person = $_POST['person'];

Et si vous utilisez curl à partir de la ligne de commande, voici la syntaxe pour vouloir POST json data:

curl -d 'person={"name":"bob"}'
1
Luca Matteis