如何使用curl命令行工具POST LF?

Rob*_*nto 7 linux curl

我正在尝试使用来自Linux shell脚本的CURL POST到SMS提供程序(Sybase 365)的HTTP网关.

我需要传递以下数据(注意[]和LF字符)

[MSISDN]
List=+12345678
[MESSAGE]
Text=Hello
[END]
Run Code Online (Sandbox Code Playgroud)

如果我使用-F参数提交文件,CURL将删除LF,例如

curl -F @myfile "http://www.sybase.com/..."
Run Code Online (Sandbox Code Playgroud)

在服务器上导致此问题(被拒绝)

[MSISDN]List=+12345678[MESSAGE]Text=Hello[END]
Run Code Online (Sandbox Code Playgroud)

我有什么办法可以避免这种情况,还是需要替代工具?

我正在使用包含我的数据的文件进行测试,但我想在实践中避免这种情况,直接从脚本中进行POST.

Ath*_*ena 11

尝试使用--data-binary而不是-d(ata-ascii).

从手册:

--data-binary(HTTP)以与--data-ascii类似的方式发布数据,尽管使用此选项时,已发布数据的整个上下文保持原样.

如果您想发布没有--data-ascii选项的strip-newlines功能的二进制文件,这适合您.如果多次使用此选项,则第一个选项将附加数据.

ETA:哎呀,我应该更仔细地阅读这个问题.你使用的是-F,而不是-d.但--data-binary可能还是值得一试.


Rob*_*nto 3

我已经使用 -d 完成了这个工作

request=`printf "[MSISDN]\nList=$number\n[MESSAGE]\nText=$message\n[END]\n"`
response=`curl -s -u $username:$password -d "$request" http://www.sybase.com/...`
Run Code Online (Sandbox Code Playgroud)

奇怪的是,如果我使用 -d @myfile (其中 myfile 包含 LF 分隔的文本),它不起作用。

我也尝试过 --data-binary 但没有成功。