如何使用Curl命令在头部传递“Content-Length”值

46

我该如何在curl命令中传递内容长度,例如--header Content-Length:1000。 我尝试在命令中这样使用,但没有起作用。

curl -v -X POST -u "xxx@gmail.com:xxx123" \ 
     --header "Content-Length: 1000" \
     --header "Content-Type: multipart/mixed" \
     --header "X-REQUEST-ID:7fc7d038-4306-4fc5-89c3-7ac8a12a30d0" \
     -F "request={\"bumId\":\"d51f2978-5ce8-4c71-8503-b0ca438741dd\",\"fileType\":\"imageFile\"};type=application/json" \
     -F "file=@D:/file.pdf" \
     "http://localhost:9090/pro/v1/files"

这个命令将文件发布到使用Jersey Java开发的Web服务

3个回答

47

那么解决方案是什么?移除 -d 吗? - Wenhan Xiao
1
@WenhanXiao 原始示例缺少 -d "",这会导致curl计算内容长度。 - Drew Delano
使用-H查看特定标题值。 - e-Fungus

13
尝试这个命令:curl -X POST http://localhost:9090/pro/v1/files -d "Content-Length: 0" curl-d选项可以在请求主体中添加数据。根据其文档:

-d,--data (HTTP)将指定的数据发送到HTTP服务器的POST请求中,就像用户填写HTML表单并按提交按钮一样。这会导致curl使用content-type application/x-www-form-urlencoded将数据传递给服务器。


5
欢迎来到 Stack Overflow!我建议在您的答案中添加一些解释,以便有类似问题的人更好地理解解决方案。也许可以解释一下 -d 标志是什么?或者从 Curl 手册中添加一小段代码片段? - user1694691
4
你确定这是正确的吗?-d 用于指定要发布的数据。 - user2297550
遭到负评了。-d 是请求体,-H 是请求头。通过使用 -d "Content-Length: 0",你将发送该文本作为请求体。 - blackr1234

11

增加类似这样的标题应该就可以解决问题:

-H 'content-length: 1000' \

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接