मैं एक xml फ़ाइल को स्थानीय सर्वर पर कैसे भेज / पोस्ट कर सकता हूं http: // localhost: 8080 कमांड लाइन से कर्ल का उपयोग करके?
मुझे किस कमांड का उपयोग करना चाहिए?
मैं एक xml फ़ाइल को स्थानीय सर्वर पर कैसे भेज / पोस्ट कर सकता हूं http: // localhost: 8080 कमांड लाइन से कर्ल का उपयोग करके?
मुझे किस कमांड का उपयोग करना चाहिए?
जवाबों:
यदि यह प्रश्न आपके अन्य हडसन प्रश्नों से जुड़ा है, तो उनके द्वारा प्रदान की गई कमांड का उपयोग करें। कमांड लाइन से XML के साथ इस तरह:
$ curl -X POST -d '<run>...</run>' \
http://user:pass@myhost:myport/path/of/url
आपको फ़ाइल से पढ़ने के लिए इसे थोड़ा बदलना होगा:
$ curl -X POST -d @myfilename http://user:pass@myhost:myport/path/of/url
मैनपेज पढ़ें । -d पैरामीटर के लिए एक सार का पालन।
-d / - डेटा
(HTTP) HTTP सर्वर के लिए POST अनुरोध में निर्दिष्ट डेटा भेजता है, उसी तरह जो एक ब्राउज़र तब करता है जब कोई उपयोगकर्ता HTML फॉर्म में भरता है और सबमिट बटन दबाता है। यह सामग्री-प्रकार एप्लिकेशन / x-www-form-urlencoded का उपयोग करके सर्वर को डेटा पास करने के लिए कर्ल का कारण होगा। तुलना करें -F / - फॉर्म।
-d / - डेटा एक ही है --data-ascii। विशुद्ध रूप से द्विआधारी डेटा पोस्ट करने के लिए, आपको --डेटा-बाइनरी विकल्प का उपयोग करना चाहिए। किसी प्रपत्र फ़ील्ड के मान को URL-एनकोड करने के लिए आप --data-urlencode का उपयोग कर सकते हैं।
यदि इनमें से कोई भी विकल्प एक ही कमांड लाइन पर एक से अधिक बार उपयोग किया जाता है, तो निर्दिष्ट डेटा टुकड़े एक अलग और -symbol के साथ एक साथ विलय कर दिए जाएंगे। इस प्रकार, '-d name = daniel -d skill = lousy' का उपयोग करके एक पोस्ट चंक उत्पन्न होगा जो 'name = daniel & skill = lousy' जैसा दिखता है।
यदि आप डेटा को अक्षर @ से शुरू करते हैं, तो डेटा को पढ़ने के लिए शेष फ़ाइल नाम होना चाहिए, या - यदि आप स्टड से डेटा पढ़ने के लिए कर्ल चाहते हैं। फ़ाइल की सामग्री पहले से ही URL-एन्कोडेड होनी चाहिए। एकाधिक फ़ाइलों को भी निर्दिष्ट किया जा सकता है। 'फोब्बर' नामक फाइल से डेटा पोस्टिंग इस प्रकार किया जाएगा --data @foobar के साथ।
--header "Content-Type:application/xml"
आपको URL-encode
-L
, तो इसका उपयोग न करें -X POST
क्योंकि यह पुनर्निर्देशित अनुरोध को POST का भी उपयोग करेगा। यदि आप सिर्फ -टाइ का उपयोग करते हैं, तो यह पता चलता है, ऐसा नहीं होगा
-d
स्ट्रिप्स लाइन फ़ाइलों से टूट जाती है। इससे बचने के लिए --data-binary
इसकी जगह इस्तेमाल करें ।
से मैनपेज , मेरा मानना है कि इन ड्रौयड आप देख रहे हैं कर रहे हैं:
-F/--form <name=content>
(HTTP) यह कर्ल को भरे हुए फॉर्म का अनुकरण करने देता है जिसमें उपयोगकर्ता ने सबमिट बटन दबाया है। यह RFC2388 के अनुसार सामग्री-प्रकार मल्टीपार्ट / फ़ॉर्म-डेटा का उपयोग करके POST डेटा के लिए कर्ल का कारण बनता है। यह बाइनरी फ़ाइलों आदि को अपलोड करने में सक्षम बनाता है। 'सामग्री' भाग को फ़ाइल के लिए बाध्य करने के लिए, एक @ चिह्न के साथ फ़ाइल का नाम उपसर्ग करें।
उदाहरण के लिए, अपनी पासवर्ड फ़ाइल को सर्वर पर भेजने के लिए, जहाँ 'पासवर्ड' फॉर्म-फील्ड का नाम है जिसमें / etc / पासवार्ड इनपुट होगा:
curl -F password=@/etc/passwd www.mypasswords.com
तो आपके मामले में, यह कुछ ऐसा होगा
curl -F file=@/some/file/on/your/local/disk http://localhost:8080
file=@-
यदि आप अपनी फ़ाइल को पाइप करना चाहते हैं तो यह प्रारूप मददगार है।
आप फ़ाइल के साथ विकल्प - डेटा का उपयोग कर सकते हैं।
अनुरोध करने के लिए नाम भेजने के लिए साबुन_गेट। Xml और कर्ल कमांड का उपयोग करके xml सामग्री को लिखें:
कर्ल -X POST --header "सामग्री-प्रकार: पाठ / xml; charset = UTF-8" --data @ साबुन_get.xml your_url
जेनकिन्स 1.494 के साथ, मैं उबंटू लिनक्स 12.10 पर एक जॉब पैरामीटर के लिए एक फाइल भेजने में सक्षम था, curl
जिसमें --form
मापदंडों का उपयोग किया गया था :
curl --form name=myfileparam --form file=@/local/path/to/your/file.xml \
-Fjson='{"parameter": {"name": "myfileparam", "file": "file"}}' \
-Fsubmit=Build \
http://user:password@jenkinsserver/job/jobname/build
जेनकिंस सर्वर पर, मैंने एक काम को कॉन्फ़िगर किया है जो एकल पैरामीटर को स्वीकार करता है: एक फ़ाइल अपलोड पैरामीटर जिसका नाम है myfileparam
।
उस कर्ल कॉल की पहली पंक्ति एक वेब फॉर्म का निर्माण करती है जिसका नाम पैरामीटर होता है myfileparam
(नौकरी में समान); इसका मान नाम के स्थानीय फ़ाइल सिस्टम पर एक फ़ाइल की सामग्री होगी /local/path/to/your/file.txt
। @
प्रतीक उपसर्ग कर्ल बताता दी फ़ाइल नाम के बजाय एक स्थानीय फ़ाइल भेजने के लिए।
दूसरी पंक्ति एक JSON अनुरोध को परिभाषित करती है जो लाइन एक पर प्रपत्र मापदंडों से मेल खाती है: एक फ़ाइल पैरामीटर नाम myfileparam
।
तीसरी पंक्ति फॉर्म के बिल्ड बटन को सक्रिय करती है। अगली पंक्ति "/ बिल्ड" प्रत्यय के साथ जॉब URL है।
यदि यह कॉल सफल है, तो कर्ल रिटर्न 0
। यदि यह असफल है, तो सेवा से त्रुटि या अपवाद कंसोल पर मुद्रित होता है। यह उत्तर हडसन से संबंधित एक पुराने ब्लॉग पोस्ट से बहुत कुछ लेता है , जिसे मैंने अपनी आवश्यकताओं के लिए फिर से काम किया और फिर से काम किया।
यहां बताया गया है कि आप विंडोज पर कर्ल कमांड लाइन का उपयोग करके विंडोज पर एक्सएमएल को कैसे पोस्ट कर सकते हैं। उसके लिए बेहतर उपयोग बैच / .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^>john@smith.com^</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 file=@"/home/xxx/Desktop/customers.json" 'API_SERVER_URL' -k
यदि आप विंडोज पर कर्ल का उपयोग कर रहे हैं :
curl -H "Content-Type: application/xml" -d "<?xml version="""1.0""" encoding="""UTF-8""" standalone="""yes"""?><message><sender>Me</sender><content>Hello!</content></message>" http://localhost:8080/webapp/rest/hello
The contents of the file must already be URL-encoded.
ओपी की एक्सएमएल फाइलें निश्चित रूप से नहीं हैं।