如何使用 curl 发布原始身体数据?

Posted

技术标签:

【中文标题】如何使用 curl 发布原始身体数据?【英文标题】:How to post raw body data with curl? 【发布时间】:2017-08-20 14:53:22 【问题描述】:

在您将此作为副本发布之前;我已经尝试了很多关于 SO 的建议。

到目前为止,我一直在使用邮递员将数据发布到 Java Web 服务。效果很好,如下所示:

我现在想用 curl 做同样的事情,所以我尝试了以下方式:

$ curl -X POST --data "this is raw data" http://78.41.xx.xx:7778/
$ curl -X POST --data-binary "this is raw data" http://78.41.xx.xx:7778/
$ curl -X POST --data "@/home/kramer65/afile.txt" http://78.41.xx.xx:7778/
$ curl -X POST --data-binary "@/home/kramer65/afile.txt" http://78.41.xx.xx:7778/

不幸的是,所有这些都在接收端显示一个空的原始身体。

有人知道我在这里做错了什么吗?我的 curl 请求与我的邮递员请求有何不同?欢迎所有提示!

【问题讨论】:

【参考方案1】:

curl 的--data 默认会在请求头中发送Content-Type: application/x-www-form-urlencoded。但是,当使用 Postman 的raw body 模式时,Postman 在请求头中发送Content-Type: text/plain

所以要实现与 Postman 相同的功能,为 curl 指定 -H "Content-Type: text/plain"

curl -X POST -H "Content-Type: text/plain" --data "this is raw data" http://78.41.xx.xx:7778/

请注意,如果您想观看 Postman 发送的完整请求,您可以启用打包应用的调试。检查this link 以获取所有说明。然后您可以检查应用程序(在 Postman 中右键单击)并在 network 选项卡中查看从 Postman 发送的所有请求:

【讨论】:

应该注意,虽然正文部分发送完全相同相同。这只是改变了一个标题。

以上是关于如何使用 curl 发布原始身体数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在GitHub正确地使用 Curl 下载文件?

在 PHP 中使用 cURL 的 RAW POST

如何使用命令行从私有 github 存储库下载单个原始文件?

如何使用 bash 或 curl 将数据 urlencode 到 URL

如何使用 php curl 重定向来自 api 的发布数据?

c# 异步 curl 请求 - 我如何访问响应?