Использование cURL для публикации данных

4874
chhenning

Я пытаюсь опубликовать на localhost с некоторыми параметрами в URL. Все просто отлично работает в Fiddler. Но cURL не позволяет мне сделать это, с сообщением об ошибке ниже.

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

{"Message": "Не найден ресурс HTTP, который соответствует URI запроса" http: // localhost: 49301 / api / donut / run ".", "MessageDetail": "На контроллере" Donut "не было найдено никакого действия, которое соответствует запросу. "}

В Fiddler я составляю запрос следующим образом: POST http: // localhost: 49301 / api / donut / run? Task = bake

2

3 ответа на вопрос

1
chhenning

The following works:

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

The parameter "--data ''" seems to be important so curl does a POST and not a GET.

0
davidgo

Хотя технически вы можете выполнять запрос «POST» в fiddler (который я не использовал, но я кое-что знаю об HTTP), мне кажется, что вы на самом деле не публикуете свой запрос, а вы используют "PUT" (предположительно в сочетании с пустым постом).

Я полагаю, что если бы вы использовали curl http: // localhost: 49301 / api / donut / run? Task = bake, это бы работало нормально.

[Запрос PUT помещает параметры как часть URL, вместо этого запрос POST помещает их в заголовок запроса.

Вполне вероятно, что ваше приложение запрограммировано на прием PUTS, но не POSTS.

Когда я попробую ваше предложение, веб-сервер вернется со словами: «Запрошенный ресурс не поддерживает http-метод« GET »». chhenning 8 лет назад 0
Хорошо, как насчет попытки -data "ignore = me" http: // localhost: 49301 / api / donut / run? Task = bake davidgo 8 лет назад 0
Извините, это тоже не работает chhenning 8 лет назад 0
0
s3raph86

Использование curl с аргументом --data вызывает curl для POST, но также отправляет аргументы как часть тела запроса, а не как аргументы, передаваемые через URL.

Учитывая, что полученная вами ошибка является ошибкой маршрутизации MVC, утверждающей, что маршрут не может быть разрешен действием, я предполагаю, что целевое действие не настроено для получения его параметров из тела запрос.

Пытаться:

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

Похожие вопросы