Как я могу POST LF с помощью инструмента командной строки curl? - PullRequest
7 голосов
/ 23 декабря 2008

Я пытаюсь POST к HTTP-шлюзу поставщика SMS (Sybase 365), используя CURL из сценария оболочки Linux.

Мне нужно передать следующие данные (обратите внимание на символы [] и 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]

Могу ли я что-нибудь сделать, чтобы избежать этого, или мне нужен альтернативный инструмент?

Я использую файл, содержащий мои данные, для тестирования, но я бы хотел избежать этого на практике и POST непосредственно из скрипта.

Ответы [ 4 ]

11 голосов
/ 23 декабря 2008

Попробуйте использовать --data-binary вместо -d(ata-ascii).

Из руководства:

- двоичные данные (HTTP). Публикация данных осуществляется аналогично --data-ascii, хотя при использовании этой опции весь контекст публикуемых данных сохраняется как есть.

Если вы хотите опубликовать двоичный файл без функции strip-newlines в опции --data-ascii, это для вас. Если этот параметр используется несколько раз, данные, следующие за первым, будут добавлять данные.

ETA: ой, я должен прочитать вопрос более внимательно. Вы используете -F, а не -d. Но --data-binary может все еще стоить того.

3 голосов
/ 23 декабря 2008

У меня это работает, используя -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 голосов
/ 23 декабря 2008

Возможно, глупая мысль, но я не думаю, что для этого требуется CRLF вместо просто LF?

В качестве альтернативы, вы пытались использовать - двоичный файл данных вместо -F?

1 голос
/ 25 ноября 2010
curl "url" --data-binary @myfile 

публикует новые строки в данных [проверено на curl 7.12.1]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...