আমি কিভাবে পাঠাতে পারেন / একটি স্থানীয় সার্ভারে একটি XML ফাইল পোষ্ট HTTP: // স্থানীয় হোস্ট: 8080 কম্যান্ড লাইন থেকে কার্ল ব্যবহার করছেন?
আমার কোন আদেশ ব্যবহার করা উচিত?
আমি কিভাবে পাঠাতে পারেন / একটি স্থানীয় সার্ভারে একটি XML ফাইল পোষ্ট HTTP: // স্থানীয় হোস্ট: 8080 কম্যান্ড লাইন থেকে কার্ল ব্যবহার করছেন?
আমার কোন আদেশ ব্যবহার করা উচিত?
উত্তর:
যদি এই প্রশ্নটি আপনার অন্যান্য হাডসনের প্রশ্নের সাথে সংযুক্ত থাকে তবে তারা প্রদত্ত আদেশটি ব্যবহার করে। কমান্ড লাইন থেকে এক্সএমএল দিয়ে এইভাবে:
$ 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
পড়ুন র manpage । -ড প্যারামিটারের জন্য একটি বিমূর্তি অনুসরণ করে।
-d / - তথ্য
(এইচটিটিপি) কোনও পোষ্ট অনুরোধে নির্দিষ্ট ডেটা এইচটিটিপি সার্ভারে প্রেরণ করে, যখন কোনও ব্যবহারকারী কোনও এইচটিএমএল ফর্ম পূরণ করে জমা দেওয়ার বোতামটি চাপ দেয় তখন কোনও ব্রাউজার এটি করে। এটি কনটেন্ট-টাইপ অ্যাপ্লিকেশন / x-www-form-urlencoded ব্যবহার করে সার্ভারের কাছে ডেটা পাঠিয়ে দেবে cause -এফ / - ফর্মের সাথে তুলনা করুন।
-d / - ডেটা --data-ascii এর সমান। বিশুদ্ধভাবে বাইনারি ডেটা পোস্ট করতে, পরিবর্তে আপনাকে --data-binary বিকল্পটি ব্যবহার করা উচিত। কোনও ফর্ম ক্ষেত্রের মান URL- এনকোড করতে আপনি ব্যবহার করতে পারেন - ডেটা-ইউরেলকোড nc
যদি এই বিকল্পগুলির মধ্যে কোনও একই কমান্ড লাইনে একাধিকবার ব্যবহার করা হয় তবে নির্দিষ্ট করা ডেটা টুকরোগুলি পৃথককারী &-সিম্বোলের সাথে একত্রে একত্রিত হবে। সুতরাং, '-d নাম = ড্যানিয়েল-ডি দক্ষতা = লসি' ব্যবহার করে একটি পোস্ট খণ্ড তৈরি হবে যা দেখতে 'নাম = ড্যানিয়েল এবং দক্ষতা = লসি' বলে মনে হচ্ছে।
আপনি যদি @ চিঠিটি দিয়ে ডেটা শুরু করেন, বাকিটি থেকে ফাইলটি পড়ার জন্য একটি ফাইলের নাম হওয়া উচিত, বা - আপনি স্টিডিনের কাছ থেকে ডেটা পড়তে কার্ল করতে চান। ফাইলের সামগ্রীগুলি ইতিমধ্যে ইউআরএল-এনকোড হওয়া উচিত। একাধিক ফাইলও নির্দিষ্ট করা যায়। 'ফুবার' নামের ফাইল থেকে ডেটা পোস্ট করা এইভাবে --ডাটা @ ফুবার দিয়ে করা হবে।
--header "Content-Type:application/xml"
দেওয়ার পরে ইউআরএল-এনকোডের
-L
করবেন না-X POST
কারণ এটি পুনঃনির্দেশিত অনুরোধটি পোষ্টও ব্যবহার করবে। @ টাইয়ের পরামর্শ অনুসারে আপনি যদি মাত্র -d ব্যবহার করেন তবে এটি হবে না
-d
স্ট্রিপস লাইন ফাইল থেকে বিরতি দেয়। এটি এড়াতে --data-binary
পরিবর্তে ব্যবহার করুন।
ম্যানপেজ থেকে , আমি বিশ্বাস করি এটি হ'ল ড্রয়েড যা আপনি খুঁজছেন:
-F/--form <name=content>
(এইচটিটিপি) এটি কোনও পূরণকৃত ফর্মটি কার্লকে অনুকরণ করতে দেয় যাতে কোনও ব্যবহারকারী সাবমিট বাটন টিপেছে। এটি আরএফসি 2388 অনুসারে সামগ্রী-ধরণের মাল্টিপার্ট / ফর্ম-ডেটা ব্যবহার করে পোস্টের ডেটাতে কার্ল তৈরি করে। এটি বাইনারি ফাইলগুলি ইত্যাদি আপলোড সক্ষম করে content 'বিষয়বস্তু' অংশটি একটি ফাইল হতে বাধ্য করতে, @ সাইন দিয়ে ফাইলের নামটি উপস্থাপন করুন।
উদাহরণস্বরূপ, সার্ভারে আপনার পাসওয়ার্ড ফাইলটি প্রেরণ করা, যেখানে 'পাসওয়ার্ড' হল সেই ফর্ম-ফিল্ডের নাম যেখানে / ইত্যাদি / পাসডাব্লুড ইনপুট হবে:
curl -F password=@/etc/passwd www.mypasswords.com
সুতরাং আপনার ক্ষেত্রে, এটি কিছু হবে
curl -F file=@/some/file/on/your/local/disk http://localhost:8080
file=@-
আপনি যদি নিজের ফাইলটি পাইপ করতে চান তবে ফর্ম্যাটটি সহায়ক
আপনি ফাইল সহ --data বিকল্পটি ব্যবহার করতে পারেন।
নামের ফাইলটিতে এক্সএমএল বিষয়বস্তু লিখুন soap_get.xML এবং কার্ল কমান্ড ব্যবহার করে অনুরোধ প্রেরণ করুন:
কার্ল-এক্স পোস্ট - শিরোলেখ "বিষয়বস্তুর ধরণ: পাঠ্য / এক্সএমএল; চরসেট = ইউটিএফ -8" --ডাটা @ সাবান_জেট.এক্সএমএল আপনার_আরএল
জেনকিন্স 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 রয়েছে URL
যদি এই কলটি সফল হয়, কার্ল ফিরে আসে 0
। যদি এটি ব্যর্থ হয় তবে পরিষেবা থেকে ত্রুটি বা ব্যতিক্রম কনসোলে মুদ্রিত হবে। এই উত্তরটি হডসন সম্পর্কিত একটি পুরাতন ব্লগ পোস্ট থেকে অনেক কিছু নিয়েছে , যা আমি নিজের প্রয়োজনে ডিকনস্ট্রাক্ট করে পুনরায় কাজ করেছি।
আপনি কীভাবে উইন্ডোজে কার্ল কমান্ড লাইনটি ব্যবহার করে উইন্ডোজে এক্সএমএল পোস্ট করতে পারেন তা এখানে। এর জন্য ব্যাচ /। সিএমডি ফাইলের আরও ভাল ব্যবহার করুন:
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.
ওপি'র এক্সএমএল ফাইল অবশ্যই তা নয়।