2010-07-17 2 views
0

У меня есть сценарий, с помощью которого данные POST передаются на сервер с использованием cURL. Когда я использую форму HTML для POST одни и те же данные, то POST выглядит примерно так, и все хорошо:Загрузить содержимое файла с помощью cURL

description=Something&name=aName&xml=wholeBiunchOfData&xslt=moreData 

XML, и XSLT большие и изменения; Я бы предпочел сохранить их во внешних файлах. Однако, как я ожидаю, не работает следующее:

curl --cookie cjar --cookie-jar cjar --location --output NUL^
--data "name=aName&description=Something"^
    --data "[email protected]"^
--data "[email protected]"^
http://someUrl.html 

Я пробовал различные комбинации @ и локальных файлов без успеха. Как сделать POST содержимое файла?

ответ

1

Я рекомендую попробовать следующее:

curl --cookie cjar --cookie-jar cjar --location --output NUL^
--data "name=aName&description=Something"^
    --data-urlencode "[email protected]"^
--data-urlencode "[email protected]"^
http://someUrl.html 

XML (включая таблицы стилей) должно быть URL-закодировано до их части URL.

Вы также можете использовать --trace-ascii - в качестве дополнительного параметра, чтобы сбрасывать ввод и вывод в стандартную версию для дальнейшей отладки, и вы можете найти более подробную информацию о главном man page.

Надеюсь, это поможет!

+0

Фантастический! Большое спасибо! – Upperstage

2

При взгляде на страницу руководства это выглядит так, как синтаксис --data @file не разрешает имя переменной, оно должно быть в файле. http://paulstimesink.com/2005/06/29/http-post-with-curl/. Кроме того, можно попробовать с помощью кавычке

curl --cookie cjar --cookie-jar cjar --location --output NUL^
--data "name=aName&description=Something"^
--data "xml=`cat localFile.xml`"^
--data "xslt=`cat someFile.xml`"^
http://someUrl.html 
+0

Спасибо за ответ. – Upperstage

+0

Ссылка в этом ответе сломана. –

+0

Похоже, что он перенесен на http://paulstimesink.com/2005/06/29/http-post-with-curl/. –