2008-12-23 70 views
7

我試圖從Linux shell腳本使用CURL POST到SMS提供程序(Sybase 365)的HTTP網關。如何使用curl命令行工具POST LF?

我需要通過以下數據(注意[]和LF字符)

[MSISDN] 
List=+12345678 
[MESSAGE] 
Text=Hello 
[END] 

如果我提交使用-F參數文件,CURL去除LF例如

curl -F @myfile "http://www.sybase.com/..." 

導致這個在服務器(被拒絕)

[MSISDN]List=+12345678[MESSAGE]Text=Hello[END] 

有什麼我可以做,以避免這還是我需要一種替代工具?

我正在使用包含我的數據進行測試的文件,但我想避免這種情況在實踐中直接從腳本中進行。

回答

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/...` 

奇怪的是,如果我使用-d @myfile(其中MYFILE包含LF分隔文本)這方面的工作,這是行不通的。

我也試過--data-binary沒有成功。在數據

3

可能是一個愚蠢的想法,但我不認爲它實際上需要CRLF而不是LF?

或者,您是否嘗試過使用--data-binary選項而不是-F?

+0

CRLF或LF - 它沒有任何區別 - 但直到你和雅典娜讓我意識到--data二進制,我也無法發送。謝謝。 – 2008-12-23 09:00:29

11

嘗試使用--data-binary而不是-d(ata-ascii)

從手冊:

--data二進制(HTTP)以相似的方式作爲--data-ascii這樣職位數據確實,使用此選項時雖然發佈數據的整個範圍內是保持原樣。

如果你想發佈一個沒有--data-ascii選項的strip-newlines功能的二進制文件,這是給你的。如果多次使用此選項,則第一個選項後面的數據將附加數據。

ETA:oops,我應該仔細閱讀這個問題。你正在使用-F,而不是-d。但--data-binary可能仍然值得一試。

+0

這就是我剛纔的結論:) – 2008-12-23 07:46:49

1
curl "url" --data-binary @myfile 

發佈新線[測試上的捲曲7.12.1]