Odpowiedzi:
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
Wieloczęściowy z polami i nazwą pliku:
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
Aby uzyskać więcej informacji, zobacz instrukcję cURL . Poradnik cURL na emulację przeglądarki internetowej jest bardzo pomocna.
W libcurl użyj curl_formadd()
funkcji do zbudowania formularza przed przesłaniem go w zwykły sposób. Aby uzyskać więcej informacji, zobacz dokumentację libcurl .
W przypadku dużych plików rozważ dodanie parametrów pokazujących postęp przesyłania:
curl --tr-encoding -X POST -v -# -o output -T filename.dat \
http://example.com/resource.cgi
Jest -o output
to wymagane, w przeciwnym razie nie pojawi się pasek postępu.
--data-urlencode
(bez kreski), przynajmniej w najnowszych wersjach
With Fields
, kiedy Multipart
i kiedy Without Data
?
--data
ciebie możesz użyć -d
.
W przypadku RESTful HTTP POST zawierającego XML:
curl -X POST -d @filename.txt http://example.com/path/to/resource --header "Content-Type:text/xml"
lub w przypadku JSON użyj tego:
curl -X POST -d @filename.txt http://example.com/path/to/resource --header "Content-Type:application/json"
Spowoduje to odczytanie zawartości pliku o nazwie filename.txt
i wysłanie go jako żądanie postu.
curl -X POST
implikuje żądanie HTTP POST, -d
parametr (wersja długa :) --data
informuje curl, że następujące będą parametry POST i @filename
wyznacza zawartość pliku filename
jako parametr. Takie podejście najlepiej działa z interfejsami API RESTful HTTP znajdującymi się na Twitterze, Facebooku, różnych innych usługach internetowych, w tym Ruby on Rails, a także interfejsami API HTTP baz danych, takich jak CouchDB. REST oznacza reprezentatywny transfer stanu
-X POST
skoro to sugeruje -d
.
Dane ze standardowego z -d @-
Przykład:
echo '{"text": "Hello **world**!"}' | curl -d @- https://api.github.com/markdown
Wynik:
<p>Hello <strong>world</strong>!</p>
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi
to przykład znaleziony w podręczniku Curl Example Manual .
Użyj% 26 dla ampersand, jeśli powyższe nie działa:
curl -d "name=Rafael%20Sagula%26phone=3320780" http://www.where.com/guest.cgi
Jeśli chcesz zalogować się do witryny, 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 plik cookie sesji (dostarczany po pomyślnym zalogowaniu) w pliku „headers”. Od teraz możesz używać tego pliku cookie do uwierzytelniania Cię w dowolnej części witryny, do której zazwyczaj uzyskujesz dostęp po zalogowaniu się w przeglądarce.
curl -v --data-ascii var=value http://example.com
i jest o wiele więcej opcji, sprawdź curl --help
więcej informacji.
Jeśli jesteś leniwy, możesz google-chrome wykonać całą pracę za Ciebie.
Chrome skopiuje wszystkie dane żądania w składni cURL.
Chrome używa funkcji, --data 'param1=hello¶m2=world'
które możesz uczynić bardziej czytelnymi, używając jednego -d
lub -F
jednego parametru w zależności od typu żądania POST, które chcesz wysłać, którym może być jeden application/x-www-form-urlencoded
lub multipart/form-data
odpowiednio.
Zostanie on opublikowany jako POST application/x-www-form-urlencoded
( używany w przypadku większości formularzy, które nie zawierają przesłanych plików ):
curl http://httpbin.org/post \
-H "User-Agent: Mozilla/2.2" \
-d param1=hello \
-d name=dinsdale
W przypadku zastosowania multipart/form-data
POST -F
( zwykle używanego z formularzami zawierającymi przesyłanie plików lub tam, gdzie ważna jest kolejność pól lub gdy wymagane jest wiele 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
User-Agent
Nagłówek nie jest zazwyczaj potrzebne, ale mam wrzucony go na wszelki wypadek. Możesz uniknąć konieczności konfigurowania klienta użytkownika na każde żądanie, tworząc ~/.curlrc
plik zawierający npUser-Agent: "Mozilla/2.2"
curl -d "param1=value1¶m2=value2" -X POST http://localhost:3000/data