У меня есть серверное приложение, написанное на ASP.NET для Windows, которое предоставляет веб-сервис.
Как я могу вызвать веб-сервис в Linux с помощью cURL?
У меня есть серверное приложение, написанное на ASP.NET для Windows, которое предоставляет веб-сервис.
Как я могу вызвать веб-сервис в Linux с помощью cURL?
* 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¶m2=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
Я думаю, что 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