Jaka jest składnia linii poleceń cURL do wykonania żądania POST?
Jak mogę wykonać żądanie POST za pomocą narzędzia cURL linii poleceń?
Z polami:
curl --data "param1=value1¶m2=value2" https://example.com/resource.cgi
Z polami określonymi indywidualnie:
curl --data "param1=value1" --data "param2=value2" https://example.com/resource.cgi
Multipart:
curl --form "fileupload=@my-file.txt" https://example.com/resource.cgi
Multipart with fields and a filename:
curl --form "fileupload=@my-file.txt;filename=desired-filename.txt" --form param1=value1 --form param2=value2 https://example.com/resource.cgi
Bez danych:
curl --data '' https://example.com/resource.cgi
curl -X POST https://example.com/resource.cgi
curl --request POST https://example.com/resource.cgi
Więcej informacji znajduje się w the cURL manual . Pomocny jest samouczek cURL dotyczący emulacji przeglądarki internetowej .
Z libcurl, użyj funkcji curl_formadd()
aby zbudować swój formularz przed wysłaniem go w zwykły sposób. Zobacz dokumentacja libcurl aby uzyskać więcej informacji.
Dla dużych plików, rozważ dodanie parametrów pokazujących postęp wysyłania:
curl --tr-encoding -X POST -v -# -o output -T filename.dat \
http://example.com/resource.cgi
-o output
jest wymagane, w przeciwnym razie nie pojawi się pasek postępu.
Dla RESTful HTTP POST zawierający XML:
curl -X POST -d @filename.txt http://example.com/path/to/resource --header "Content-Type:text/xml"
lub dla JSON, użyj tego:
curl -X POST -d @filename.txt http://example.com/path/to/resource --header "Content-Type:application/json"
To odczyta zawartość pliku o nazwie filename.txt
i wyśle go jako żądanie pocztowe.
Dane od stdin z -d @-
Przykład:
echo '{"text": "Hello **world**!"}' | curl -d @- https://api.github.com/markdown
Wyjście:
<p>Hello <strong>world</strong>!</p>
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi
jest przykładem zawartym w Curl Example Manual .
Użyj %26 dla wzmacniaczy, jeśli powyższe nie działa:
curl -d "name=Rafael%20Sagula%26phone=3320780" http://www.where.com/guest.cgi
Jeśli chcesz się zalogować, wykonaj następujące czynności:
curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/
Pierwsze żądanie zapisuje sesyjny plik cookie (który jest dostarczany po udanym zalogowaniu) w pliku “nagłówki”. Od tej chwili możesz użyć tego pliku cookie do uwierzytelnienia użytkownika do dowolnej części strony internetowej, do której zwykle masz dostęp po zalogowaniu się za pomocą przeglądarki.
curl -v --data-ascii var=value http://example.com
i jest jeszcze wiele innych opcji, sprawdź curl --help
aby uzyskać więcej informacji.
Jeśli jesteś leniwy, możesz dostać google-chrome lub firefox, aby wykonać całą pracę za Ciebie.
Chrome skopiuje wszystkie dane zapytania w składni cURL.
Chrome używa --data 'param1=hello¶m2=world'
, które możesz uczynić bardziej czytelnym używając jednego -d
lub -F
na parametr w zależności od tego, jaki typ zapytania POST chcesz wysłać, które może być odpowiednio application/x-www-form-urlencoded
lub multipart/form-data
.
Będzie to POST-ed jako application/x-www-form-urlencoded
(używane dla większości formularzy, które nie zawierają plików uploads):
curl http://httpbin.org/post \
-H "User-Agent: Mozilla/2.2" \
-d param1=hello \
-d name=dinsdale
Dla multipart/form-data
POST użyj -F
(typowo używane dla formularzy, które zawierają wgrywanie plików, lub gdy kolejność pól jest ważna, lub gdy wymagana jest większa ilość pól o tej samej nazwie):
curl http://httpbin.org/post \
-H "User-Agent: Mozilla/2.2" \
-F param1=hello \
-F name=dinsdale \
-F name=piranha
Nagłówek User-Agent
nie jest normalnie potrzebny, ale wrzuciłem go na wszelki wypadek. Jeśli potrzebujesz własnego agenta, możesz uniknąć konieczności ustawiania go na każde żądanie, tworząc plik ~/.curlrc
, który zawiera np.