在Linux中使用cURL进行HTTP POST和GET

Ran*_*esh 348 linux curl web-services

我在Windows上用ASP.NET编写了一个服务器应用程序,它提供了一个Web服务.

如何使用cURL在Linux中调用Web服务?

Ami*_*lgi 681

*nix提供了一个很好的小命令,使我们的生活更轻松.

得到:

使用JSON:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource
Run Code Online (Sandbox Code Playgroud)

使用XML:

curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource
Run Code Online (Sandbox Code Playgroud)

POST:

用于发布数据:

curl --data "param1=value1&param2=value2" http://hostname/resource
Run Code Online (Sandbox Code Playgroud)

对于文件上传:

curl --form "fileupload=@filename.txt" http://hostname/resource
Run Code Online (Sandbox Code Playgroud)

RESTful HTTP帖子:

curl -X POST -d @filename http://hostname/resource
Run Code Online (Sandbox Code Playgroud)

用于登录站点(auth):

curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/
Run Code Online (Sandbox Code Playgroud)

漂亮印刷卷曲结果:

对于JSON:

如果使用npmnodejs,则可以json通过运行以下命令来安装软件包:

npm install -g json
Run Code Online (Sandbox Code Playgroud)

用法:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | json
Run Code Online (Sandbox Code Playgroud)

如果使用pippython,则可以pjson通过运行以下命令来安装软件包:

pip install pjson
Run Code Online (Sandbox Code Playgroud)

用法:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | pjson
Run Code Online (Sandbox Code Playgroud)

如果您使用Python 2.6+,json工具将捆绑在其中.

用法:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | python -m json.tool
Run Code Online (Sandbox Code Playgroud)

如果使用gemruby,则可以colorful_json通过运行以下命令来安装软件包:

gem install colorful_json
Run Code Online (Sandbox Code Playgroud)

用法:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | cjson
Run Code Online (Sandbox Code Playgroud)

如果您使用apt-get(Linux发行版的aptitude包管理器),则可以yajl-tools通过运行以下命令来安装包:

sudo apt-get install yajl-tools
Run Code Online (Sandbox Code Playgroud)

用法:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource |  json_reformat
Run Code Online (Sandbox Code Playgroud)

对于XML:

如果你在Debian/Gnome环境中使用*nix,请安装libxml2-utils:

sudo apt-get install libxml2-utils
Run Code Online (Sandbox Code Playgroud)

用法:

curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource | xmllint --format -
Run Code Online (Sandbox Code Playgroud)

或安装tidy:

sudo apt-get install tidy
Run Code Online (Sandbox Code Playgroud)

用法:

curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource | tidy -xml -i -
Run Code Online (Sandbox Code Playgroud)

将curl响应保存到文件

curl http://hostname/resource >> /path/to/your/file
Run Code Online (Sandbox Code Playgroud)

要么

curl http://hostname/resource -o /path/to/your/file
Run Code Online (Sandbox Code Playgroud)

有关curl命令的详细说明,请点击:

man curl
Run Code Online (Sandbox Code Playgroud)

有关curl命令的选项/开关的详细信息,请执行以下操作:

curl -h
Run Code Online (Sandbox Code Playgroud)

  • 在“ get”示例中,您可以引用整个URL以避免参数出错,例如“ curl” http://www.virustotal.com/vtapi/v2/ip-address/report?ip=8.8.8.8&apikey= 1233456890“` (5认同)

gre*_*pit 50

我认为Amith Koujalgi是正确的,但是,如果Web服务响应是JSON,那么以干净的JSON格式而不是非常长的字符串查看结果可能更有用.只需添加| grep} | python -mjson.tool到curl命令的结尾这里有两个例子:

使用JSON结果获取GET方法

curl -i -H "Accept: application/json" http://someHostName/someEndpoint | grep }| python -mjson.tool 
Run Code Online (Sandbox Code Playgroud)

使用JSON结果的POST方法

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

在此输入图像描述

  • grep应该在这里做什么?我使用以下命令得到相同的结果:`curl -s -H“接受:应用程序/ json” -H“内容类型:应用程序/ json” -H“ http:// $ {API_BASE_URL} $ {1}” | python -mjson.tool` (2认同)