cURL抑制反应体

时间:2015-09-09 20:00:23

标签: curl output suppress

是否可以指示cURL抑制响应体的输出?

就我而言,响应正文是一个HTML页面,它溢出了CLI缓冲区,使得很难找到相关信息。我想检查输出的其他部分,例如HTTP响应代码,标题,e.t.c。 - 除了实际HTML之外的所有

4 个答案:

答案 0 :(得分:82)

您可以使用-o开关和null伪文件:

的Unix

curl -s -o /dev/null -v http://google.com

curl -s -o nul -v http://google.com

答案 1 :(得分:16)

这是一种抑制所有curl输出和标题的方法,如果出现错误,仍然会显示错误。适用于cron作业或自动化测试。

的Unix

要取消所有输出:

curl --silent --output /dev/null http://example.com

要抑制输出,但如果出现错误仍然显示错误:

curl --silent --output /dev/null --show-error --fail http://example.com

要取消所有输出:

curl --silent --output nul http://example.com

要抑制输出,但如果出现错误仍然显示错误:

curl --silent --output nul --show-error --fail http://example.com

参数说明

--silent会抑制正在下载的统计信息(但仍会显示HTML输出) --output /dev/null隐藏成功输出
即使启用--show-error模式,silent也会显示错误 如果HTTP响应是错误代码(404,500等)而不仅仅是DNS / TCP错误,--fail将引发错误。

更新:我意识到原作者想要检查请求的标头和响应代码,而不是静默所有内容。有关如何执行此操作的详细信息,请参阅samael's answer

答案 2 :(得分:9)

如果要显示标题但隐藏响应正文,则需要使用:

curl -sIXGET http://somedomain.com/your/url

我一直在使用curl -I http://somedomain.com/your/url来显示响应标头。但问题是它使用HEAD method发出请求,当您想要测试仅响应GET请求的API调用时,这是不好的。这是-X GET的用途,它将请求更改为GET

所以,总结一下:

-s隐藏输出的进度条(在管道到另一个程序时特别有用)
-I显示标题(但提出HEAD请求)
-XGET将请求转换回GET请求

请参阅:http://www.woolie.co.uk/article/curl-full-get-request-dropping-body/

答案 3 :(得分:1)

只需发出HEAD请求。您将获得没有主体的标题。符合标准的服务器应该在这里发送与GET请求完全相同的信息。

curl --head <url>

如果HEAD请求由于某种原因而对您不起作用,这将使cURL接收并打印响应代码和标头,然后断开连接甚至不接收响应主体-与其他收到并随后丢弃它的答案不同。这样可以节省大量时间和带宽,尤其是在机身很大的情况下。

curl --head -X GET <url>