curl कमांड लाइन का उपयोग कर xml फ़ाइल भेजें/पोस्ट करें




command-line (7)

जेनकींस 1.4 9 4 के साथ, मैं उर्फंटू लिनक्स 12.10 पर --form पैरामीटर के साथ curl का उपयोग करके नौकरी पैरामीटर में एक फाइल भेजने में सक्षम था:

curl --form name=myfileparam --form [email protected]/local/path/to/your/file.xml \
  -Fjson='{"parameter": {"name": "myfileparam", "file": "file"}}' \
  -Fsubmit=Build \
  http://user:[email protected]/job/jobname/build

जेनकींस सर्वर पर, मैंने एक ऐसा कार्य कॉन्फ़िगर किया जो एक पैरामीटर स्वीकार करता है: myfileparam नामक एक फ़ाइल अपलोड पैरामीटर।

उस कर्ल कॉल की पहली पंक्ति myfileparam नामक पैरामीटर के साथ एक वेब फ़ॉर्म myfileparam (नौकरी के समान ही); इसका मूल्य स्थानीय फ़ाइल सिस्टम /local/path/to/your/file.txt नाम की फ़ाइल की सामग्री होगी। @ प्रतीक उपसर्ग दिए गए फ़ाइल नाम के बजाय स्थानीय फ़ाइल भेजने के लिए कर्ल को बताता है।

दूसरी पंक्ति एक JSON अनुरोध को परिभाषित करती है जो लाइन myfileparam पर फ़ॉर्म पैरामीटर से मेल खाती है: myfileparam नामक फ़ाइल पैरामीटर।

तीसरी पंक्ति फॉर्म के बिल्ड बटन को सक्रिय करती है। आगे की रेखा "/ build" प्रत्यय के साथ नौकरी यूआरएल है।

यदि यह कॉल सफल है, तो कर्ल 0 लौटाता है। यदि यह असफल है, तो सेवा से त्रुटि या अपवाद कंसोल पर मुद्रित होता है। यह उत्तर हडसन से संबंधित एक पुराने ब्लॉग पोस्ट से बहुत कुछ लेता है, जिसे मैंने अपनी जरूरतों के लिए रद्द कर दिया और फिर से काम किया।

मैं एक स्थानीय सर्वर http: // localhost: 8080 को कमांड लाइन से कर्ल का उपयोग करके एक XML फ़ाइल को कैसे भेज / पोस्ट कर सकता हूं?

मुझे किस कमांड का उपयोग करना चाहिए?


यदि वह प्रश्न आपके अन्य हडसन प्रश्नों से जुड़ा हुआ है तो वे जो आदेश प्रदान करते हैं उसका उपयोग करें।

$ curl -X POST -d '<run><log encoding="hexBinary">4142430A</log><result>0</result><duration>2000</duration></run>' \
http://user:[email protected]/hudson/job/_jobName_/postBuildResult

फ़ाइल से पढ़ने के लिए आपको इसे थोड़ा सा बदलना होगा:

 $ curl -X POST -d @myfilename http://user:[email protected]/hudson/job/_jobName_/postBuildResult

manpage पढ़ें। डी पैरामीटर के लिए एक सार के बाद।

-d / - डेटा

(HTTP) निर्दिष्ट डेटा को HTTP सर्वर पर POST अनुरोध में भेजता है, वैसे ही जब ब्राउज़र उपयोगकर्ता द्वारा HTML फॉर्म भरता है और सबमिट बटन दबाता है। इससे कंटेंट-टाइप एप्लिकेशन / एक्स-www-form-urlencoded का उपयोग कर सर्वर को डेटा पास करने का कर्ल होगा। -एफ / - फॉर्म की तुलना करें।

-d / - डेटा --डेटा-एसीआईआई जैसा ही है। डेटा को पूरी तरह बाइनरी पोस्ट करने के लिए, आपको इसके बजाय --डेटा-बाइनरी विकल्प का उपयोग करना चाहिए। किसी फॉर्म फ़ील्ड के मान को URL-एन्कोड करने के लिए आप --डेटा-urlencode का उपयोग कर सकते हैं।

यदि इनमें से किसी भी विकल्प को एक ही कमांड लाइन पर एक से अधिक बार उपयोग किया जाता है, तो निर्दिष्ट डेटा टुकड़े अलग-अलग और -सिंबोल के साथ मिल जाएंगे। इस प्रकार, '-d name = daniel -d skill = lousy' का उपयोग करके एक पोस्ट खंड उत्पन्न होता है जो 'name = daniel और skill = lousy' जैसा दिखता है।

यदि आप पत्र @ के साथ डेटा शुरू करते हैं, तो शेष डेटा को पढ़ने के लिए फ़ाइल नाम होना चाहिए, या - यदि आप stdin से डेटा को पढ़ने के लिए कर्ल चाहते हैं। फ़ाइल की सामग्री पहले ही यूआरएल-एन्कोडेड होनी चाहिए। एकाधिक फाइलों को भी निर्दिष्ट किया जा सकता है। 'Foobar' नाम की फ़ाइल से डेटा पोस्ट करना इस प्रकार --डेटा @foobar के साथ किया जाएगा।


manpage , मेरा मानना ​​है कि ये वे ड्रॉइड हैं जिन्हें आप ढूंढ रहे हैं:

-F/--form <name=content>

(HTTP) यह कर्ल को एक भरे हुए फॉर्म का अनुकरण करने देता है जिसमें उपयोगकर्ता ने सबमिट बटन दबाया है। यह RFC2388 के अनुसार सामग्री-प्रकार मल्टीपार्ट / फॉर्म-डेटा का उपयोग करके पोस्ट डेटा को कर्ल का कारण बनता है। यह बाइनरी फाइलों को अपलोड करने में सक्षम बनाता है। 'सामग्री' भाग को फ़ाइल होने के लिए मजबूर करने के लिए, फ़ाइल नाम को @ चिह्न के साथ उपसर्ग करें।

उदाहरण के लिए, सर्वर पर अपनी पासवर्ड फ़ाइल भेजने के लिए, जहां 'पासवर्ड' फॉर्म-फ़ील्ड का नाम है जिसमें / etc / passwd इनपुट होगा:

curl -F [email protected]/etc/passwd www.mypasswords.com

तो आपके मामले में, यह कुछ ऐसा होगा
curl -F [email protected]/some/file/on/your/local/disk http://localhost:8080


यदि आपके पास एकाधिक शीर्षलेख हैं तो आप निम्न का उपयोग करना चाहेंगे:

curl -X POST --header "Content-Type:application/json" --header "X-Auth:AuthKey" --data @hello.json Your_url

आप फ़ाइल के साथ विकल्प - डेटा का उपयोग कर सकते हैं।

नाम की फ़ाइल में xml सामग्री लिखें soap_get.xml और अनुरोध भेजने के लिए कर्ल कमांड का उपयोग करना:

curl -X POST --header "सामग्री-प्रकार: टेक्स्ट / xml; charset = UTF-8" --डेटा @ soap_get.xml your_url


विंडोज़ पर कर्ल कमांड लाइन का उपयोग करके आप विंडोज़ पर एक्सएमएल पोस्ट कैसे कर सकते हैं। इसके लिए बैच / .cmd फ़ाइल का बेहतर उपयोग करें:

curl -i -X POST -H "Content-Type: text/xml" -d             ^
"^<?xml version=\"1.0\" encoding=\"UTF-8\" ?^>                ^
    ^<Transaction^>                                           ^
        ^<SomeParam1^>Some-Param-01^</SomeParam1^>            ^
        ^<Password^>SomePassW0rd^</Password^>                 ^
        ^<Transaction_Type^>00^</Transaction_Type^>           ^
        ^<CardHoldersName^>John Smith^</CardHoldersName^>     ^
        ^<DollarAmount^>9.97^</DollarAmount^>                 ^
        ^<Card_Number^>4111111111111111^</Card_Number^>       ^
        ^<Expiry_Date^>1118^</Expiry_Date^>                   ^
        ^<VerificationStr2^>123^</VerificationStr2^>          ^
        ^<CVD_Presence_Ind^>1^</CVD_Presence_Ind^>            ^
        ^<Reference_No^>Some Reference Text^</Reference_No^>  ^
        ^<Client_Email^>[email protected]^</Client_Email^>       ^
        ^<Client_IP^>123.4.56.7^</Client_IP^>                 ^
        ^<Tax1Amount^>^</Tax1Amount^>                         ^
        ^<Tax2Amount^>^</Tax2Amount^>                         ^
    ^</Transaction^>                                          ^
" "http://localhost:8080"

आप इस कमांड का उपयोग कर सकते हैं:

curl -X POST --header 'Content-Type: multipart/form-data' --header 'Accept: application/json' --header 'Authorization: <<Removed>>' -F [email protected]"/home/xxx/Desktop/customers.json"  'API_SERVER_URL' -k 




curl