我正在尝试使用来自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可能还是值得一试.
我已经使用 -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 但没有成功。