CUrl在提交文件后显示响应标头

时间:2014-07-04 13:21:45

标签: curl

我将文件发布到url并希望读取curl控制台中的所有标头输出。我应该添加什么参数?

curl -F file=@"c:\Word.docx" http://do.convertapi.com/Word2Pdf > output.pdf

2 个答案:

答案 0 :(得分:4)

使用-i

来自cURL手册

 -i, --include       Include protocol headers in the output (H/F)

另请注意:

-I, --head          Show document info only

第一个将显示标题,然后是正文。第二个会发送一个HEAD请求,因此您可以在您的示例中使用,因为您正在发布数据。

修改

使用-i的标头输出回显到stdout,与请求主体相同,因此将响应定向到PDF文件将创建无效的PDF。

所以我建议您使用-v,这会更吵闹,但是在将stdout指向文件时会在命令行显示标题,因为详细输出会转到stderr。

答案 1 :(得分:2)

UnixUnix-like 系统中,以下内容提交请求,将响应标头写入控制台并将响应正文保存到 output.pdf

curl -F file=@"c:\Word.docx" http://do.convertapi.com/Word2Pdf \
--output output.pdf --dump-header /dev/fd/1 --silent | tail -n +2

说明

--output output.pdf 选项将结果输出到 output.pdf

<块引用>
-o, --output <file>
       Write output to <file> instead of stdout.

--dump-header /dev/fd/1 选项将 HTTP 状态行(例如 HTTP/1.1 200 OK)和响应标头写入标准输出(即控制台)。 --dump-header 选项将标头转储到给定文件。 /dev/fd/1 是 stdout 的 file descriptor,因此写入它的任何内容都会输出到控制台。

<块引用>
-D, --dump-header <filename>
       (HTTP FTP) Write the received protocol headers to the specified file.

--silent 选项使得只输出标题,而不输出进度条。

<块引用>
-s, --silent
       Silent  or  quiet  mode. Don't show progress meter or error messages.  Makes Curl mute. It will still output the data you ask for,
       potentially even to the terminal/stdout unless you redirect it.

curl 的结果是 pipedtail 命令 tail -n +2,丢弃第一行内容,即 HTTP 状态行(例如 {{1} })。如果您想要或不介意拥有状态行和标题,则可以省略此 HTTP/1.1 200 OK 管道部分。

<块引用>
tail

示例

-n, --lines=[+]NUM
       output the last NUM lines, instead of the last 10; or use
       -n +NUM to output starting with line NUM