POST isteği yapmak için cURL komut satırı sözdizimi nedir?


2187

CURL komut satırı aracıyla nasıl POST isteği yapabilirim ?


curl -d "param1=value1&param2=value2" -X POST http://localhost:3000/data
svikramjeet

Yanıtlar:


2542

Alanları ile:

curl --data "param1=value1&param2=value2" https://example.com/resource.cgi

Tek tek belirtilen alanlarla:

curl --data "param1=value1" --data "param2=value2" https://example.com/resource.cgi

Çok parçalı:

curl --form "fileupload=@my-file.txt" https://example.com/resource.cgi

Alanlar ve bir dosya adıyla çok bölüm:

curl --form "fileupload=@my-file.txt;filename=desired-filename.txt" --form param1=value1 --form param2=value2 https://example.com/resource.cgi

Veri olmadan:

curl --data '' https://example.com/resource.cgi

curl -X POST https://example.com/resource.cgi

curl --request POST https://example.com/resource.cgi

Daha fazla bilgi için cURL kılavuzuna bakınız . Bir web tarayıcısı taklit üzerine cURL öğretici yararlıdır.

Libcurl ile curl_formadd()formunuzu her zamanki gibi göndermeden önce bu fonksiyonu kullanın. Daha fazla bilgi için libcurl belgelerine bakın .

Büyük dosyalar için, yükleme ilerlemesini göstermek üzere parametreler eklemeyi düşünün:

curl --tr-encoding -X POST -v -# -o output -T filename.dat \
  http://example.com/resource.cgi

-o outputAksi hiçbir ilerleme çubuğu belirecektir, gereklidir.


7
@LauriRanta --data-urlencode(çizgi yok), en son sürümlerde en az
waitinforatrain

4
Ayrıca, bir kaynak PUT ile güncellemeniz gerekiyorsa da çalışır: curl -X PUT ...
Subfuzion

3
Anlamakta zorlanıyorum ... ne zaman With Fields, ne zaman Multipartve ne zaman yapabilirim Without Data?
CodyBugstein

7
--dataSenin yerine kullanabilirsin -d.
user35538

Alanlarım var. bunu nasıl yapabilirim?
ARUNBALAN NV

507

XML içeren bir RESTful HTTP POST için:

curl -X POST -d @filename.txt http://example.com/path/to/resource --header "Content-Type:text/xml"

veya JSON için şunu kullanın:

curl -X POST -d @filename.txt http://example.com/path/to/resource --header "Content-Type:application/json"

Bu, adlandırılmış dosyanın içeriğini okuyacak filename.txtve gönderim isteği olarak gönderecektir.


13
@ tom-wijsman açıklaması: curl -X POSTbir HTTP POST isteğini ifade eder, -dparametre (uzun versiyon :) , --dataaşağıdakilere POST parametreleri olacağını söyler @filenameve dosyanın içeriğini filenameparametre olarak atar. Bu yaklaşım Twitter, Facebook, Ruby on Rails ve diğer CouchDB gibi veritabanlarının HTTP API'leri de dahil olmak üzere diğer web servislerinde bulunan RESTful HTTP API'leri ile en iyi şekilde çalışır. REST Temsilci devlet aktarımı
soundmonster

1
Xml yanıtını bir satırda değil, biçimlendirilmiş halde nasıl görebiliriz?
Vitaly Zdanevich

6
Bence -X POSTima edildiğinden bu yana ayrılabileceğini düşünüyorum -d.
benjifisher

Birden fazla başlık nasıl verilir?
keya

Çoklu Başlıkları: -H "header2: 2": -H "1 header2" bukle ...
Tomáš Kratochvíla


66
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi 

Curl Örnek Kılavuzunda bulunan örnek .

Yukarıdakiler işe yaramazsa da, işaretler için% 26 kullanın:

curl -d "name=Rafael%20Sagula%26phone=3320780" http://www.where.com/guest.cgi 

61

Bir siteye giriş yapmak istiyorsanız, aşağıdakileri yapın:

curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/

İlk istek, oturum çerezini (başarılı oturum açıldığında verilir) "başlıklar" dosyasına kaydeder. Şu andan itibaren bu çerezi, bir tarayıcıyla giriş yaptıktan sonra genellikle erişeceğiniz web sitesinin herhangi bir bölümünde doğrulamak için kullanabilirsiniz.


6
curl 'in man sayfasından bir not:' -c, --cookie-jar seçeneği, çerezleri saklamanın daha iyi bir yoludur. '
maxschlepzig

32
curl -v --data-ascii var=value http://example.com

ve daha birçok seçenek var, curl --helpdaha fazla bilgi için kontrol edin .


27

Tembel iseniz, sizin için tüm işleri yapmak için google-chrome alabilirsiniz.

  1. Göndermek istediğiniz formu sağ tıklayın ve İncele'yi seçin . Bu DevTools panelini açacaktır.
  2. Devtools uygulamasında sekmesini seçin ve Günlüğü koru onay kutusunu işaretleyin.
  3. Formu gönderin ve girişi POST yöntemiyle bulun (herhangi bir sütun başlığına sağ tıklayın ve Yöntemin işaretli olduğundan emin olun ).
  4. POST ile çizgiyi sağ tıklayın ve Kopyala > cURL olarak kopyala'yı seçin .

chrome devtools: cURL olarak kopyala

Chrome, tüm istek verilerini cURL sözdiziminde kopyalar.

Krom kullanan --data 'param1=hello&param2=world'tek kullanarak daha okunabilir hale hangi -dya -Fbağlı başına parametreyi POST hangi tür ya olabilen, göndermek istediğiniz talep üzerine application/x-www-form-urlencodedveya multipart/form-databuna göre.

Bu, POST olarak yayınlanacaktır application/x-www-form-urlencoded( dosya yüklemesi içermeyen formların çoğu için kullanılır ):

curl http://httpbin.org/post \
    -H "User-Agent: Mozilla/2.2" \
    -d param1=hello \
    -d name=dinsdale

Bir için multipart/form-dataSONRASI kullanımı -F( tipik olarak dosya yükleme içeren, veya formlar kullanılabilir alanların sırası önemlidir, veya aynı isimde birden fazla alanın gerekli olduğu yerlerde ):

curl http://httpbin.org/post \
    -H "User-Agent: Mozilla/2.2" \
    -F param1=hello \
    -F name=dinsdale \
    -F name=piranha

User-AgentBaşlık normalde gerekli değildir, ama her ihtimale karşı onu attım. ~/.curlrcÖrneğin içeren dosyayı oluşturarak kullanıcı aracısını her istek üzerine ayarlamaktan kaçınabilirsiniz.User-Agent: "Mozilla/2.2"

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.