Curl 卷曲抑制反应体

Curl 卷曲抑制反应体,curl,output,suppress,Curl,Output,Suppress,是否可以指示cURL抑制响应体的输出 在我的例子中,响应主体是一个HTML页面,它会溢出CLI缓冲区,因此很难找到相关信息。我想检查输出的其他部分,如HTTP响应代码、标题、e.t.c.-除实际HTML之外的所有内容。您可以使用-o开关和null伪文件: Unix 窗户 这里有一种抑制所有curl输出和标题的方法,如果出现错误,还可以选择显示错误。用于cron作业或自动测试 Unix 要抑制所有输出,请执行以下操作: curl --silent --output /dev/null http:/

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


在我的例子中,响应主体是一个HTML页面,它会溢出CLI缓冲区,因此很难找到相关信息。我想检查输出的其他部分,如HTTP响应代码、标题、e.t.c.-除实际HTML之外的所有内容。

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

Unix 窗户
这里有一种抑制所有curl输出和标题的方法,如果出现错误,还可以选择显示错误。用于cron作业或自动测试

Unix 要抑制所有输出,请执行以下操作:

curl --silent --output /dev/null http://example.com
curl --silent --output nul http://example.com
要抑制输出但在出现错误时仍显示错误,请执行以下操作:

curl --silent --output /dev/null --show-error --fail http://example.com
curl --silent --output nul --show-error --fail http://example.com
窗户 要抑制所有输出,请执行以下操作:

curl --silent --output /dev/null http://example.com
curl --silent --output nul http://example.com
要抑制输出但在出现错误时仍显示错误,请执行以下操作:

curl --silent --output /dev/null --show-error --fail http://example.com
curl --silent --output nul --show-error --fail http://example.com
解释的参数
--silent
抑制正在下载的统计信息(但仍将显示HTML输出)
--output/dev/null
隐藏成功的输出
--显示错误
显示错误,即使启用了
静音
模式
--如果HTTP响应是错误代码(404500等),而不仅仅是DNS/TCP错误,则失败
将引发错误



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

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

curl -sIXGET http://somedomain.com/your/url
我一直在使用
curl-Ihttp://somedomain.com/your/url
仅用于显示响应标题。但问题是,当您想要测试一个只响应
GET
请求的API调用时,它使用发出请求是不好的。这就是
-xget
的作用,它将请求更改为
GET

因此,总而言之:

-s
从输出中隐藏进度条(当管道传输到另一个程序时尤其有用)
-I
显示标题(但发出
标题
请求)
-XGET
将请求转换回
GET
请求


请参阅:

只需提出HEAD请求。您将获得没有正文的标题。标准编译器服务器应该在这里发送与GET请求完全相同的信息

curl --head <url>

通过将任何其他动词(例如,
POST
)提供给
-X
选项,而不是
GET

,您也可以对其执行类似操作。。。如果您在Unix上;-)对于Windows,您可能希望使用nul。以下是这些文档的链接,也许BaltoStar在下次询问之前有阅读的冲动;-)不客气。但它是“nul”,“null”将创建一个同名文件事实上,我在发布之前阅读了手册页,并尝试了
-s-o nul
,但在我的windows机器上
curl-s-o nul-v http://{internal host}/{internal uri}
输出页面的整个html——我尝试了
curl-s-onul-vhttp://google.com
并且它确实按预期抑制了输出,所以我不明白为什么这对我的内部站点不起作用
-o
只指定一个URL输出:如果有多个URL,它将只放弃第一个:(依赖于不可移植的
NUL
/dev/null
。在我看来,使用是一个更好的选择。依赖于不可移植的
NUL
/dev/null
。在我看来,使用是一个更好的选择。感谢@binki的注释-它们实际上做了不同的事情。还意识到OP想要检查我的解决方案中没有显示的标题。我我更新了我的答案以反映这一点。我猜在重读OP的帖子时,他们并没有说他们只想看到标题。他们可能实际上一直在寻找
curl-vo/dev/null
/
curl-voNUL
…我不知道是否有一个可移植的变体,hrm…;-)有一个简短的命令--fail吗?我认为-sS是我们在--silent和--show error方面所需要的。是的,有:
curl-Ssfo/dev/null url
。但是对未来的维护人员好一点。这真的很复杂;
curl-I
做的事情完全一样。不,
-I
在输出和正文中都包含HTTP头。试试看。
curl-ihttp://google.com
curl-IXGET不同http://google.com
出于我的目的(以及OP的目的)
curl-iURL
已经足够了,并且具有相同的效果。我只需要检查url是否有响应。这个问题也仅仅是关于抑制身体,而身体
HEAD
做得很好。这不适用于POST,还取决于HEAD在中的实现server@AllanDeamon
-X POST
不起作用吗?
-X
覆盖动词sent,但保持Curl的行为不受
--head
--receive的影响,只显示响应代码和头。服务器实现了头。我看到许多实现没有按预期工作。但这里的要点是头相当于GET。正确的实现方法是执行GET所做的一切然后只发送标题。因此,如果你想触发行为或其他动词(如POST),标题动词将不起作用。因此,当你使用--HEAD,而不是发送GET时,它将发送一个HEAD。但是你不能发送两个HTTP动词。@AllanDeamon可能我不够清楚。
curl--HEAD-X
发送
而不是
发送HEAD
在这种情况下,我建议你把答案编辑得更清楚,因为这似乎是一个正确的答案,但其他人可能会和我有同样的误解。