2008-09-17 15:39:01 +0000 2008-09-17 15:39:01 +0000
2240
2240

Jaka jest składnia linii poleceń cURL do wykonania żądania POST?

Jak mogę wykonać żądanie POST za pomocą narzędzia cURL linii poleceń?

Odpowiedzi (7)

2607
2607
2607
2008-09-17 15:43:28 +0000

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.

517
517
517
2011-03-10 08:29:31 +0000

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.

137
137
137
2014-03-25 19:35:44 +0000

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>
69
69
69
2008-09-17 15:42:15 +0000
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
63
63
63
2012-03-04 02:21:37 +0000

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.

35
35
35
2008-09-17 15:43:02 +0000
curl -v --data-ascii var=value http://example.com

i jest jeszcze wiele innych opcji, sprawdź curl --help aby uzyskać więcej informacji.

33
33
33
2017-09-29 08:06:57 +0000

Jeśli jesteś leniwy, możesz dostać google-chrome lub firefox, aby wykonać całą pracę za Ciebie.

  1. Kliknij prawym przyciskiem myszy na formularz, który chcesz wysłać i wybierz Inspect (lub Inspect Element dla Firefoksa). Spowoduje to otwarcie panelu DevTools.
  2. Wybierz zakładkę Network w devtools i zaznacz pole wyboru Preserve log ( Persist Logs dla Firefoksa).
  3. Wyślij formularz i zlokalizuj wpis metodą POST (kliknij prawym przyciskiem myszy na nagłówek dowolnej kolumny i upewnij się, że zaznaczona jest Method).
  4. Kliknij prawym przyciskiem myszy na linię z POST i wybierz Kopiuj > Kopiuj jako cURL.

Chrome skopiuje wszystkie dane zapytania w składni cURL.

Chrome używa --data 'param1=hello&param2=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.