Vraag HTTP POST en GET met behulp van cURL in Linux [dupliceren]


Deze vraag heeft hier al een antwoord:

Ik had een servertoepassing in asp.net in Windows omdat ik daarvoor een webservice had.

Hoe kan ik de webservice in Linux aanroepen met behulp van shellscript door de opdracht cURL te gebruiken?


282
2018-02-20 11:11


oorsprong


antwoorden:


* nix biedt een leuke kleine opdracht die ons leven een stuk gemakkelijker maakt.

KRIJGEN:

met JSON:

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

met XML:

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

POST:

Voor het plaatsen van gegevens:

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

Voor het uploaden van bestanden:

curl --form "fileupload=@filename.txt" http://hostname/resource

RESTful HTTP Post:

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

Voor inloggen op een site (auth):

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

Pretty-afdrukken van de curl-resultaten:

Voor JSON:

Als je gebruikt npm en nodejs, je kunt installeren json pakket door deze opdracht uit te voeren:

npm install -g json

Gebruik:

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

Als je gebruikt pip en python, je kunt installeren pjson pakket door deze opdracht uit te voeren:

pip install pjson

Gebruik:

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

Als u Python 2.6+ gebruikt, wordt json-tool hierin gebundeld.

Gebruik:

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

Als je gebruikt gem en ruby, je kunt installeren colorful_json pakket door deze opdracht uit te voeren:

gem install colorful_json

Gebruik:

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

Als je gebruikt apt-get (aptitude package manager van je Linux distro), kun je installeren yajl-tools pakket door deze opdracht uit te voeren:

sudo apt-get install yajl-tools

Gebruik:

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

Voor XML:

Als u * nix gebruikt met Debian / Gnome envrionment, installeer dan libxml2-utils:

sudo apt-get install libxml2-utils

Gebruik:

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

of installeer tidy:

sudo apt-get install tidy

Gebruik:

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

De krulreactie op een bestand opslaan

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

of

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

Voor een gedetailleerde beschrijving van de curl-opdracht, klik je op:

man curl

Voor details over opties / schakelaars van de curl-opdracht, druk je op:

curl -h

579
2018-02-20 11:25



Ik denk dat Amith Koujalgi gelijk heeft maar ook, in gevallen waar de webservicereacties in JSON zijn, zou het misschien handiger zijn om de resultaten in een schoon JSON-formaat te zien in plaats van een hele lange reeks. Voeg gewoon | grep} | python -mjson.tool tot het einde van curl-opdrachten hier is twee voorbeelden:

GET-aanpak met JSON-resultaat

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

POST-aanpak met JSON-resultaat

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


47
2018-01-21 20:54