HTTP POST и GET с использованием cURL в Linux

У меня есть серверное приложение, написанное на ASP.NET для Windows, которое предоставляет веб-сервис.

Как я могу вызвать веб-сервис в Linux с помощью cURL?

Ответ 1

* nix предоставляет небольшую команду, которая значительно облегчает нашу жизнь.

GET

с JSON:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource

с XML:

curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource

POST

Для публикации данных:

curl --data "param1=value1&param2=value2" http://hostname/resource

Для загрузки файла:

curl --form "[email protected]" http://hostname/resource

RESTful HTTP Post:

curl -X POST -d @filename http://hostname/resource

Для входа в сайт (auth):

curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/

Довольно печатать результаты скручивания:

Для JSON:

Если вы используете npm и nodejs, вы можете установить пакет json, выполнив следующую команду:

npm install -g json

Использование:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | json

Если вы используете pip и python, вы можете установить пакет pjson, выполнив следующую команду:

pip install pjson

Использование:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | pjson

Если вы используете Python 2.6+, инструмент json вставляется внутри.

Использование:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | python -m json.tool

Если вы используете gem и ruby, вы можете установить пакет colorful_json, выполнив следующую команду:

gem install colorful_json

Использование:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | cjson

Если вы используете apt-get (менеджер пакетов aptitude для вашего дистрибутива Linux), вы можете установить пакет yajl-tools, выполнив следующую команду:

sudo apt-get install yajl-tools

Использование:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource |  json_reformat

Для XML:

Если вы используете * nix с Debian/Gnome envrionment, установите libxml2-utils:

sudo apt-get install libxml2-utils

Использование:

curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource | xmllint --format -

или установите tidy:

sudo apt-get install tidy

Использование:

curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource | tidy -xml -i -

Сохранение зависания в файле

curl http://hostname/resource >> /path/to/your/file

или

curl http://hostname/resource -o /path/to/your/file

Подробное описание команды curl:

man curl

Подробнее о параметрах/переключателях команды curl, нажмите:

curl -h

Ответ 2

Я думаю, что Amith Koujalgi правильный, но также, в случаях, когда ответы веб-службы находятся в JSON, тогда было бы более полезно видеть результаты в чистом формате JSON вместо очень длинной строки. Просто добавьте | grep} | python -mjson.tool до конца команд curl - это два примера:

Подход GET с результатом JSON

curl -i -H "Accept: application/json" http://someHostName/someEndpoint | grep }| python -mjson.tool 

POST-подход с результатом JSON

curl -X POST  -H "Accept: Application/json" -H "Content-Type: application/json" http://someHostName/someEndpoint -d '{"id":"IDVALUE","name":"Mike"}' | grep }| python -mjson.tool

enter image description here