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:
Wyjaśnienie @ tom-wijsman: curl -X POSTimplikuje żądanie HTTP POST, -dparametr (wersja długa :) --datainformuje curl, że następujące będą parametry POST i @filenamewyznacza zawartość pliku filenamejako 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
soundmonster
1
Jak możemy zobaczyć odpowiedź xml nie w jednym wierszu, ale sformatowanym?
Witalij Zdanevich,
6
Myślę, że możesz zrezygnować, -X POSTskoro to sugeruje -d.
benjifisher
Jak podać wiele nagłówków?
keya
Wiele nagłówków: curl -H „header2: 1„ -H ”header2: 2” ...
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.
Jeśli jesteś leniwy, możesz google-chrome wykonać całą pracę za Ciebie.
Kliknij prawym przyciskiem myszy formularz, który chcesz przesłać, i wybierz polecenie Sprawdź . Spowoduje to otwarcie panelu DevTools.
Wybierz kartę Sieć w devtools i zaznacz pole wyboru Zachowaj dziennik .
Prześlij formularz i zlokalizuj wpis za pomocą metody POST (kliknij prawym przyciskiem myszy dowolny nagłówek kolumny i upewnij się, że metoda jest zaznaczona).
Kliknij prawym przyciskiem linię POST i wybierz Kopiuj > Kopiuj jako cURL .
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 -dlub -Fjednego parametru w zależności od typu żądania POST, które chcesz wysłać, którym może być jeden application/x-www-form-urlencodedlub multipart/form-dataodpowiednio.
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 ):
W przypadku zastosowania multipart/form-dataPOST -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 ):
User-AgentNagłó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 ~/.curlrcplik zawierający npUser-Agent: "Mozilla/2.2"
curl -d "param1=value1¶m2=value2" -X POST http://localhost:3000/data
Odpowiedzi:
Z polami:
Z polami określonymi indywidualnie:
Multipart:
Wieloczęściowy z polami i nazwą pliku:
Bez danych:
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:
Jest
-o output
to wymagane, w przeciwnym razie nie pojawi się pasek postępu.źródło
--data-urlencode
(bez kreski), przynajmniej w najnowszych wersjachWith Fields
, kiedyMultipart
i kiedyWithout Data
?--data
ciebie możesz użyć-d
.W przypadku RESTful HTTP POST zawierającego XML:
lub w przypadku JSON użyj tego:
Spowoduje to odczytanie zawartości pliku o nazwie
filename.txt
i wysłanie go jako żądanie postu.źródło
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ść plikufilename
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:
Wynik:
źródło
to przykład znaleziony w podręczniku Curl Example Manual .
Użyj% 26 dla ampersand, jeśli powyższe nie działa:
źródło
Jeśli chcesz zalogować się do witryny, wykonaj następujące czynności:
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.
źródło
i jest o wiele więcej opcji, sprawdź
curl --help
więcej informacji.źródło
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ć jedenapplication/x-www-form-urlencoded
lubmultipart/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 ):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 ):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"
źródło