С помощью libcurl используйте curl_formadd()функцию для создания формы, прежде чем отправлять ее обычным способом. См. Документацию libcurl для получения дополнительной информации.
Для больших файлов рассмотрите возможность добавления параметров, чтобы показать ход загрузки:
Объяснение @ tom-wijsman: curl -X POSTподразумевает HTTP-запрос POST, -dпараметр (long version :) --dataсообщает curl, что ниже будут параметры POST, и @filenameопределяет содержимое файла в filenameкачестве параметра. Этот подход лучше всего работает с HTTP-API RESTful, которые можно найти в Twitter, Facebook, различных других веб-сервисах, включая Ruby on Rails, а также HTTP-API баз данных, таких как CouchDB. REST расшифровывается как « Представительный государственный перевод»
soundmonster
1
Как мы можем увидеть ответ XML не в одну строку, а отформатирован?
Виталий Зданевич
6
Я думаю, что вы можете отказаться от, -X POSTпоскольку это подразумевается -d.
benjifisher
Как дать несколько заголовков?
Кея
Несколько заголовков: curl -H "header2: 1" -H "header2: 2" ...
Первый запрос сохраняет файл cookie сеанса (который предоставляется при успешном входе в систему) в файл «заголовки». Отныне вы можете использовать этот файл cookie для аутентификации вас в любой части веб-сайта, к которой вы обычно обращаетесь после входа в браузер.
Если вы ленивый, вы можете получить Google-Chrome, чтобы сделать всю работу за вас.
Щелкните правой кнопкой мыши форму, которую вы хотите отправить, и выберите « Проверить» . Это откроет панель DevTools.
Выберите вкладку « Сеть » в devtools и установите флажок « Сохранить журнал» .
Отправьте форму и найдите запись с методом POST (щелкните правой кнопкой мыши заголовок любого столбца и убедитесь, что метод отмечен).
Щелкните правой кнопкой мыши строку POST и выберите « Копировать» > « Копировать как cURL» .
Chrome скопирует все данные запроса в синтаксисе cURL.
В Chrome --data 'param1=hello¶m2=world'вы можете сделать его более читабельным, используя один -dили несколько -Fпараметров, в зависимости от того, какой тип запроса POST вы хотите отправить, который может быть одним application/x-www-form-urlencodedили multipart/form-dataсоответствующим.
Это будет POST-ed как application/x-www-form-urlencoded( используется для большинства форм, которые не содержат загрузки файлов ):
Для использования multipart/form-dataPOST -F( обычно используется с формами, которые содержат загрузку файлов, или где важен порядок полей, или где требуются несколько полей с одинаковым именем ):
User-AgentЗаголовок обычно не требуется, но я бросил его в всяком случае. Вы можете избежать установки пользовательского агента на каждый запрос, создав ~/.curlrcфайл, который содержит, например,User-Agent: "Mozilla/2.2"
curl -d "param1=value1¶m2=value2" -X POST http://localhost:3000/data
Ответы:
С полями:
С полями, указанными индивидуально:
Multipart:
Multipart с полями и именем файла:
Без данных:
Для получения дополнительной информации см. Руководство по cURL . Curl учебник по эмулировать веб - браузер является полезным.
С помощью libcurl используйте
curl_formadd()
функцию для создания формы, прежде чем отправлять ее обычным способом. См. Документацию libcurl для получения дополнительной информации.Для больших файлов рассмотрите возможность добавления параметров, чтобы показать ход загрузки:
-o output
Требуется, в противном случае не будет отображаться не индикатор.источник
--data-urlencode
(без черты), по крайней мере, в последних версияхWith Fields
, когдаMultipart
и когдаWithout Data
?--data
тебя можно использовать-d
.Для RESTful HTTP POST, содержащего XML:
или для JSON используйте это:
Это прочитает содержимое названного файла
filename.txt
и отправит его как запрос на публикацию.источник
curl -X POST
подразумевает HTTP-запрос POST,-d
параметр (long version :)--data
сообщает curl, что ниже будут параметры POST, и@filename
определяет содержимое файла вfilename
качестве параметра. Этот подход лучше всего работает с HTTP-API RESTful, которые можно найти в Twitter, Facebook, различных других веб-сервисах, включая Ruby on Rails, а также HTTP-API баз данных, таких как CouchDB. REST расшифровывается как « Представительный государственный перевод»-X POST
поскольку это подразумевается-d
.Данные из stdin с
-d @-
Пример:
Выход:
источник
это пример, найденный в руководстве к примеру Curl .
Используйте% 26 для амперсандов, хотя, если вышеперечисленное не работает:
источник
Если вы хотите войти на сайт, сделайте следующее:
Первый запрос сохраняет файл cookie сеанса (который предоставляется при успешном входе в систему) в файл «заголовки». Отныне вы можете использовать этот файл cookie для аутентификации вас в любой части веб-сайта, к которой вы обычно обращаетесь после входа в браузер.
источник
и есть еще много вариантов, проверьте
curl --help
для получения дополнительной информации.источник
Если вы ленивый, вы можете получить Google-Chrome, чтобы сделать всю работу за вас.
Chrome скопирует все данные запроса в синтаксисе cURL.
В Chrome
--data 'param1=hello¶m2=world'
вы можете сделать его более читабельным, используя один-d
или несколько-F
параметров, в зависимости от того, какой тип запроса POST вы хотите отправить, который может быть однимapplication/x-www-form-urlencoded
илиmultipart/form-data
соответствующим.Это будет POST-ed как
application/x-www-form-urlencoded
( используется для большинства форм, которые не содержат загрузки файлов ):Для использования
multipart/form-data
POST-F
( обычно используется с формами, которые содержат загрузку файлов, или где важен порядок полей, или где требуются несколько полей с одинаковым именем ):User-Agent
Заголовок обычно не требуется, но я бросил его в всяком случае. Вы можете избежать установки пользовательского агента на каждый запрос, создав~/.curlrc
файл, который содержит, например,User-Agent: "Mozilla/2.2"
источник