POST अनुरोध करने के लिए cURL कमांड-लाइन सिंटैक्स क्या है?


2186

मैं CURL कमांड-लाइन टूल के साथ POST अनुरोध कैसे कर सकता हूं ?


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

जवाबों:


2542

खेतों के साथ:

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

व्यक्तिगत रूप से निर्दिष्ट फ़ील्ड के साथ:

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

मल्टीपार्ट:

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

खेतों और एक फ़ाइल नाम के साथ मल्टीपार्ट करें:

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

डेटा के बिना:

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

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

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

अधिक जानकारी के लिए CURL मैनुअल देखें । एक वेब ब्राउज़र की नकल पर cURL ट्यूटोरियल उपयोगी है।

Libcurl के साथ, curl_formadd()सामान्य तरीके से सबमिट करने से पहले अपने फ़ॉर्म को बनाने के लिए फ़ंक्शन का उपयोग करें । देखें libcurl प्रलेखन अधिक जानकारी के लिए।

बड़ी फ़ाइलों के लिए, अपलोड प्रगति दिखाने के लिए पैरामीटर जोड़ने पर विचार करें:

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

-o outputकी आवश्यकता है, अन्यथा कोई प्रगति बार दिखाई देगा।


7
@LauriRanta --data-urlencode(कोई पानी का छींटा), हाल के संस्करणों में कम से कम
वेटिनफॉरट्रैन

4
-X PUT कर्ल ...: इसके अलावा अगर आप एक PUT साथ एक संसाधन अद्यतन करने की आवश्यकता काम करता है
Subfuzion

3
मुझे समझने में परेशानी हो रही है ... मैं इसे With Fieldsकब, कब Multipartऔर किसके साथ करूंगा Without Data?
CodyBugstein

7
इसके बजाय --dataआप उपयोग कर सकते हैं -d
user35538

मेरे पास खेतों की एक सरणी है। मैं यह कैसे कर सकता हूँ?
ARUNBALAN NV

507

XML के लिए एक प्रासंगिक HTTP पोस्ट के लिए:

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

या JSON के लिए, इसका उपयोग करें:

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

यह नामित फ़ाइल की सामग्री को पढ़ेगा filename.txtऔर इसे पोस्ट अनुरोध के रूप में भेजेगा।


13
@ टॉम-विज्समैन स्पष्टीकरण: curl -X POSTएक HTTP POST अनुरोध का अर्थ है, -dपैरामीटर (लंबा संस्करण :) --dataकर्ल बताता है कि निम्नानुसार क्या POST पैरामीटर होंगे, और @filenameफ़ाइल की सामग्री filenameको पैरामीटर के रूप में नामित करता है। यह दृष्टिकोण RESTful HTTP APIs के साथ सबसे अच्छा काम करता है जैसा कि Twitter, Facebook, रूबी सहित विभिन्न अन्य वेब सेवाओं के साथ-साथ CouchDB जैसे डेटाबेस के HTTP APIs पर भी है। REST का प्रतिनिधित्व प्रतिनिधि राज्य हस्तांतरण
ध्वनि

1
हम प्रतिक्रिया xml को एक पंक्ति में नहीं बल्कि स्वरूपित कैसे देख सकते हैं?
विटाली ज़ेडेनविच

6
मुझे लगता है कि आप इसे छोड़ सकते हैं -X POSTक्योंकि यह निहित है -d
बेंजिफ़िशर

मल्टीपल हेडर कैसे दें?
कीया

एकाधिक हेडर: "header2: 2" एच: कर्ल एच "1 header2" ...
टॉमस Kratochvíla

131

स्टड से डेटा -d @-

उदाहरण:

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

आउटपुट:

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

6
यदि आपके पास क्लिपबोर्ड में पहले से ही JSON ऑब्जेक्ट है तो बढ़िया है
Luca Steeb

इससे भी बेहतर: गूंज "$ संदेश" | कर्ल-एच "सामग्री-प्रकार: आवेदन / json" -d @ - "$ url"
rzr

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

कर्ल उदाहरण मैनुअल में पाया गया उदाहरण है

एम्परसेंड के लिए% 26 का उपयोग करें, हालांकि यदि ऊपर काम नहीं करता है:

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

61

यदि आप किसी साइट पर लॉगइन करना चाहते हैं, तो निम्न कार्य करें:

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

पहला अनुरोध "हेडर" फ़ाइल में सत्र कुकी (जो सफल लॉगिन पर प्रदान किया गया है) को बचाता है। अब से आप उस कुकी का उपयोग उस वेबसाइट के किसी भी हिस्से को प्रमाणित करने के लिए कर सकते हैं, जिसे आप आमतौर पर ब्राउज़र से लॉग इन करने के बाद एक्सेस करते हैं।


6
कर्ल के मैन पेज से एक नोट: '-c, - cookie-jar विकल्प हालांकि कुकीज़ को स्टोर करने का एक बेहतर तरीका है।'
मैक्सक्लेपज़िग


27

यदि आप आलसी हैं, तो आप सभी काम करने के लिए google-chrome प्राप्त कर सकते हैं।

  1. उस प्रपत्र पर राइट-क्लिक करें जिसे आप सबमिट करना चाहते हैं और निरीक्षण का चयन करें । यह DevTools पैनल खोलेगा।
  2. Devtools में नेटवर्क टैब का चयन करें और संरक्षित लॉग चेकबॉक्स पर टिक करें ।
  3. फ़ॉर्म सबमिट करें और विधि POST के साथ प्रविष्टि का पता लगाएं (किसी भी कॉलम हेडर पर राइट-क्लिक करें और सुनिश्चित करें कि विधि जाँच की गई है)।
  4. POST वाली लाइन पर राइट क्लिक करें, और कॉपी करें > कॉपी करें cURL के रूप में

क्रोम devtools: cURL के रूप में कॉपी करें

Chrome cURL सिंटैक्स में सभी अनुरोध डेटा की प्रतिलिपि बनाएगा।

Chrome उपयोग करता है --data 'param1=hello&param2=world'जिसे आप एकल -dया -Fप्रति पैरामीटर का उपयोग करके अधिक पठनीय बना सकते हैं, जिसके आधार पर आप किस प्रकार का POST अनुरोध भेजना चाहते हैं, जो application/x-www-form-urlencodedया तो हो सकता है multipart/form-data

यह POST-ed के रूप में होगा application/x-www-form-urlencoded( उन रूपों के बहुमत के लिए उपयोग किया जाता है जिनमें फ़ाइल अपलोड नहीं हैं ):

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

एक multipart/form-dataPOST उपयोग के लिए -F( आमतौर पर उन रूपों के साथ उपयोग किया जाता है जिनमें फ़ाइल अपलोड होते हैं, या जहां फ़ील्ड का क्रम महत्वपूर्ण होता है, या जहां एक ही नाम वाले कई फ़ील्ड आवश्यक होते हैं ):

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

User-Agentहैडर सामान्य रूप से की जरूरत नहीं है, लेकिन मैं सिर्फ मामले में में यह फेंक दिया गया है। आप ~/.curlrcफ़ाइल को बनाकर प्रत्येक अनुरोध पर उपयोगकर्ता एजेंट को सेट करने से बच सकते हैं जिसमें उदाUser-Agent: "Mozilla/2.2"

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.