CURL zum Buchen von Daten verwenden

4977
chhenning

Ich versuche, mit einigen Parametern in der URL an localhost zu posten. In Fiddler funktioniert einfach alles. CURL erlaubt es mir jedoch nicht, dies mit der Fehlermeldung unten zu tun.

curl --data "Task = backen" http: // localhost: 49301 / api / donut / run

{"Message": "Es wurde keine HTTP-Ressource gefunden, die mit der Anforderungs-URI ' http: // localhost: 49301 / api / donut / run '.", "MessageDetail": "Keine Aktion auf dem Controller 'Donut' gefunden wurde stimmt mit der Anfrage überein. "}

In Fiddler verfasse ich die Anfrage wie folgt: POST http: // localhost: 49301 / api / donut / run? Task = backen

2

3 Antworten auf die Frage

1
chhenning

Die folgenden Arbeiten:

curl --data '' http: // localhost: 49301 / api / donut / run? Aufgabe = backen

Der Parameter "--data ''" scheint wichtig zu sein, so dass curl einen POST und kein GET durchführt.

0
davidgo

Während Sie technisch eine "POST" -Anforderung in Fiddler durchführen (was ich nicht verwendet habe, aber ich weiß ein oder zwei Dinge über HTTP), sieht es für mich sehr danach aus, als würden Sie Ihre Anfrage nicht wirklich veröffentlichen, sondern Sie verwenden einen "PUT" (vermutlich mit einem leeren Post verbunden).

Ich glaube, wenn Sie curl verwenden würden : http: // localhost: 49301 / api / donut / run? Task = backen, würde es gut funktionieren.

[Eine PUT-Anforderung setzt die Parameter als Teil der URL, eine POST-Anforderung stattdessen in den Anforderungsheader.

Es ist wahrscheinlich, dass Ihre Anwendung so programmiert ist, dass sie PUTS akzeptiert, jedoch keine POSTS.

Wenn ich Ihren Vorschlag versuche, kommt der Webserver zurück und sagt: "Die angeforderte Ressource unterstützt die http-Methode 'GET' nicht." chhenning vor 8 Jahren 0
Ok, was ist mit dem Versuch von -data "ignore = me" http: // localhost: 49301 / api / donut / run? Task = backen davidgo vor 8 Jahren 0
Sorry, das geht auch nicht chhenning vor 8 Jahren 0
0
s3raph86

Die Verwendung von curl mit dem Argument --data bewirkt, dass curl an POST gesendet wird, die Argumente jedoch auch als Teil des Hauptteils der Anforderung und nicht als über die URL übergebene Argumente gesendet werden.

Da der Fehler, den Sie erhalten, ein MVC-Routing-Fehler ist, der besagt, dass die Route nicht in eine Aktion aufgelöst werden kann, schätze ich, dass die Aktion, auf die Sie abzielen, nicht so eingerichtet ist, dass sie ihre Parameter vom Hauptteil der anfordern.

Versuchen:

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