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


मैं कैसे कर सकता हूँ पद के साथ अनुरोध cURL कमांड लाइन उपकरण?


2088
2017-09-17 15:39


मूल




जवाब:


खेतों के साथ:

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

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

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

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

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

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


2414
2017-09-17 15:43



@LauriRanta --data-urlencode (कोई डैश नहीं), कम से कम हाल के संस्करणों में - waitinforatrain
यदि आपको PUT के साथ संसाधन अपडेट करने की आवश्यकता है तो भी काम करता है: curl -X PUT ... - Subfuzion
मुझे समझ में परेशानी हो रही है ... मैं कब करूँगा With Fields, जब के साथ Multipart और कब Without Data? - CodyBugstein
के बजाय --data आप उपयोग कर सकते हैं -d। - user35538
मेरे पास खेतों की एक सरणी है। मैं यह कैसे कर सकता हूँ? - ARUNBALAN NV


एक्सएमएल युक्त एक विश्वसनीय 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 और इसे पोस्ट अनुरोध के रूप में भेजें।


487
2018-03-10 08:29



@ टॉम-विज्समैन स्पष्टीकरण: curl -X POST एक HTTP पोस्ट अनुरोध का तात्पर्य है, -d पैरामीटर (लंबा संस्करण: --data) कर्ल बताता है कि निम्नानुसार POST पैरामीटर होगा, और @filename फ़ाइल की सामग्री को निर्दिष्ट करता है filename पैरामीटर के रूप में। यह दृष्टिकोण रीस्टफुल HTTP एपीआई के साथ सबसे अच्छा काम करता है जैसा कि ट्विटर, फेसबुक, रेल पर रूबी और साथ ही साथ कॉच डीबी जैसे डाटाबेस के HTTP एपीआई सहित कई अन्य वेब सेवाओं में पाया जाता है। आरईएसटी के लिए खड़ा है प्रतिनिधित्ववादी स्थिति में स्थानांतरण - soundmonster
हम एक पंक्ति में प्रतिक्रिया xml क्यों नहीं देख सकते हैं लेकिन स्वरूपित? - Vitaly Zdanevich
मुझे लगता है कि आप छोड़ सकते हैं -X POST चूंकि इसका मतलब है -d। - benjifisher
एकाधिक शीर्षलेख कैसे दें? - keya
एकाधिक शीर्षलेख: कर्ल-एच "हेडर 2: 1" -एच "हेडर 2: 2" ... - Tomáš Kratochvíla


Stdin से डेटा: उपयोग -d @-। उदाहरण:

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

आउटपुट:

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

121
2018-03-25 19:35



बढ़िया है यदि आपके पास पहले से ही क्लिपबोर्ड में JSON ऑब्जेक्ट है - Luca Steeb
इससे भी बेहतर: echo "$ message" | curl -H "सामग्री-प्रकार: एप्लिकेशन / जेसन" -d @ - "$ url" - rzr


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 

65
2017-09-17 15:42





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

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

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


58
2018-03-04 02:21



कर्ल के मैन पेज से एक नोट: 'द-सी, --कुकी-जार विकल्प हालांकि कुकीज स्टोर करने का एक बेहतर तरीका है।' - maxschlepzig


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

और कई और विकल्प हैं, जांचें curl --help अधिक जानकारी के लिए।


32
2017-09-17 15:43





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

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

chrome devtools: copy as cURL

क्रोम कर्ल सिंटैक्स में सभी अनुरोध डेटा कॉपी करेगा।

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

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

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

के लिए multipart/form-data पोस्ट का उपयोग करें -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"


17
2017-09-29 08:06