Utiliser cURL pour publier des données

2

J'essaie de poster sur localhost avec quelques paramètres dans l'URL. Tout fonctionne bien dans Fiddler. Mais cURL ne me permet pas de le faire, avec le message d'erreur ci-dessous.

curl --data "tâche = cuire" http: // localhost: 49301 / api / donut / run

{"Message": "Aucune ressource HTTP n'a été trouvée qui correspond à l'URI de la demande ' http: // localhost: 49301 / api / donut / run '. "," MessageDetail ":" Aucune action n'a été trouvée sur le contrôleur "Donut" qui correspond à la demande. "}

Dans Fiddler, je compose la demande comme suit: POSTER http: // localhost: 49301 / api / donut / run? Task = cuire

chhenning
la source

Réponses:

0

Bien que, techniquement, vous fassiez une requête "POST" dans fiddler (ce que je n’ai pas utilisé, mais je connais une ou deux choses à propos de HTTP), il me semble que vous ne postez pas réellement votre requête. utilisent un "PUT" (probablement combiné avec un message vide).

Je crois que si vous utilisiez curl http: // localhost: 49301 / api / donut / run? Task = cuire cela fonctionnerait bien.

[Une requête PUT place les paramètres dans l'URL, une requête POST les place dans l'en-tête de requête.

Il est probable que votre application soit programmée pour accepter les PASSES mais pas les POSTS.

davidgo
la source
Lorsque j'essaie votre suggestion, le serveur Web revient en disant: "La ressource demandée ne prend pas en charge la méthode http" GET "."
chhenning
Ok, qu'en est-il d'essayer -data "ignore = me" localhost: 49301 / api / donut / run? Task = cuire
davidgo
Désolé, ça ne marche pas non plus
chhenning
0

L'utilisation de curl avec l'argument --data entraîne curl pour POST, mais aussi pour envoyer les arguments dans le corps de la requête plutôt que sous forme d'arguments transmis via l'URL.

Étant donné que l'erreur que vous recevez est une erreur de routage MVC indiquant que la route ne peut pas être résolue en une action, je suppose que l'action que vous ciblez n'est pas configurée pour recevoir ses paramètres du corps du message. demande.

Essayer:

curl -d '' http://localhost:49301/api/donut/run?Task=bake
s3raph86
la source