如何使用 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 存储库下载单个原始文件?
如何使用 bash 或 curl 将数据 urlencode 到 URL