Pertanyaan Apa sintaks perintah baris cURL untuk melakukan permintaan POST?


Bagaimana saya bisa membuat POS meminta dengan keriting alat baris perintah?


2056
2017-09-17 15:39


asal




Jawaban:


Dengan bidang:

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

Dengan kolom yang ditentukan satu per satu:

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 dengan bidang dan nama file:

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

Tanpa data:

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

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

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

Untuk informasi lebih lanjut, lihat manual cURL. Itu tutorial cURL mengemulasi browser web membantu.

Dengan libcurl, gunakan curl_formadd() berfungsi untuk membangun formulir Anda sebelum mengirimkannya dengan cara biasa. Lihat dokumentasi libcurl untuk informasi lebih lanjut.

Untuk file besar, pertimbangkan menambahkan parameter untuk menunjukkan kemajuan unggahan:

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

Itu -o output diperlukan, jika tidak, tidak ada bilah kemajuan yang akan muncul.


2389
2017-09-17 15:43



@LauriRanta --data-urlencode (tidak ada tanda hubung), setidaknya dalam versi terbaru - waitinforatrain
Juga berfungsi jika Anda perlu memperbarui sumber daya dengan PUT: curl -X PUT ... - Subfuzion
Saya mengalami kesulitan memahami ... kapan saya akan melakukannya With Fields, ketika dengan Multipart dan kapan Without Data? - CodyBugstein
Dari pada --data Kamu dapat memakai -d. - user35538
saya memiliki larik bidang. bagaimana saya bisa melakukan ini? - ARUNBALAN NV


Untuk HTTP POST RESTful yang berisi XML:

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

atau untuk JSON, gunakan ini:

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

Ini akan membaca isi dari file yang bernama filename.txt dan kirim sebagai permintaan pos.


481
2018-03-10 08:29



Penjelasan @ tom-wijsman: curl -X POST menyiratkan permintaan HTTP POST, the -d parameter (versi panjang: --data) memberitahu curl bahwa yang mengikuti adalah parameter POST, dan @filename menunjuk isi file filename sebagai parameter. Pendekatan ini bekerja paling baik dengan API HTTP RESTful seperti yang ditemukan di Twitter, Facebook, berbagai layanan web lainnya termasuk Ruby on Rails serta API HTTP dari database seperti CouchDB. REST adalah singkatan Transfer negara perwakilan - soundmonster
Bagaimana kita bisa melihat respon xml tidak dalam satu baris tetapi diformat? - Vitaly Zdanevich
Saya pikir Anda dapat meninggalkan -X POST karena itu tersirat oleh -d. - benjifisher
Bagaimana cara memberikan beberapa header? - keya
Multiple Headers: curl -H "header2: 1" -H "header2: 2" ... - Tomáš Kratochvíla


Data dari stdin: gunakan -d @-. Contoh:

echo '{"text": "Hello **world**!"}' | curl -d @- https://api.github.com/markdown

Keluaran:

<p>Hello <strong>world</strong>!</p>

120
2018-03-25 19:35



Bagus jika Anda memiliki objek JSON yang sudah ada di papan klip - Luca Steeb
bahkan lebih baik: echo "$ message" | curl -H "Content-Type: application / json" -d @ - "$ url" - rzr


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

adalah contoh yang ditemukan di Curl Example Manual.

Gunakan% 26 untuk ampersand meskipun jika cara di atas tidak berfungsi:

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

65
2017-09-17 15:42





Jika Anda ingin masuk ke suatu situs, lakukan hal berikut:

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

Permintaan pertama menyimpan cookie sesi (yang disediakan setelah berhasil masuk) dalam file "header". Mulai sekarang Anda dapat menggunakan cookie itu untuk mengautentikasi Anda ke bagian mana pun dari situs web yang biasanya Anda akses setelah masuk dengan browser.


58
2018-03-04 02:21



sebuah catatan dari halaman man curl: 'Opsi -c, --cookie-jar adalah cara yang lebih baik untuk menyimpan cookie.' - maxschlepzig


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

dan ada banyak opsi lainnya, periksa curl --help untuk informasi lebih lanjut.


32
2017-09-17 15:43





Jika Anda malas, Anda bisa mendapatkan google-chrome untuk melakukan semua pekerjaan untuk Anda.

  1. Klik kanan formulir yang ingin Anda kirimkan dan pilih Memeriksa. Ini akan membuka panel DevTools.
  2. Pilih Jaringan tab di devtools dan centang Pertahankan log kotak centang.
  3. Kirimkan formulir dan temukan entri dengan metode POST (klik kanan pada tajuk kolom mana saja dan pastikan metode dicentang).
  4. Klik kanan garis dengan POST, dan pilih Salinan > Salin sebagai cURL.

chrome devtools: copy as cURL

Chrome akan menyalin semua data permintaan dalam sintaks cURL.

Chrome menggunakan --data 'param1=hello&param2=world' yang dapat Anda buat lebih mudah dibaca dengan menggunakan single -d atau -F per parameter tergantung pada jenis permintaan POST yang ingin Anda kirim, yang dapat berupa application/x-www-form-urlencoded atau multipart/form-data demikian.

Ini akan menjadi POST-ed sebagai application/x-www-form-urlencoded (digunakan untuk sebagian besar formulir yang tidak memuat unggahan file):

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

Untuk sebuah multipart/form-data Penggunaan POST -F (biasanya digunakan dengan formulir yang berisi unggahan file, atau tempat urutan bidang penting, atau di mana beberapa bidang dengan nama yang sama diperlukan):

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

Itu User-Agent header biasanya tidak diperlukan, tapi saya sudah membuangnya untuk berjaga-jaga. Anda dapat menghindari harus mengatur agen pengguna pada setiap permintaan dengan membuat ~/.curlrc file yang berisi misalnya User-Agent: "Mozilla/2.2"


17
2017-09-29 08:06