সিআরএল ব্যবহার করে বডি, শিরোনাম এবং এইচটিটিপি প্যারামের সাথে কীভাবে পোষ্ট পাঠাতে হবে?


39

সিআরএল-এ সাধারণ পোষ্ট কমান্ডগুলি কীভাবে ব্যবহার করতে হয় সে সম্পর্কে আমি প্রচুর উদাহরণ পেয়েছি, তবে কীভাবে সম্পূর্ণ HTTP পোষ্ট কমান্ড প্রেরণ করতে হবে তার উদাহরণ আমি পাইনি:

  • শিরোনাম (প্রাথমিক প্রমাণীকরণ)
  • এইচটিটিপি প্যারাম ( s=1&r=33)
  • বডি ডেটা, কিছু এক্সএমএল স্ট্রিং

আমি যা পেয়েছি তা হ'ল:

echo "this is body" | curl -d "ss=ss&qq=11" http://localhost/

এটি কাজ করে না এবং এটি HTTP পরামিতিগুলি দেহ হিসাবে প্রেরণ করে।



একটি মত আর সম্ভব এর প্রতারিত superuser.com/questions/149329/... আমি জানি এই এক মত হেডার সম্পর্কে সুনির্দিষ্ট এবং কিন্তু অন্যান্য প্রশ্নের উত্তর যে সব ব্যবস্থা। আমি সাধারণত পুরানো জনপ্রিয় প্রশ্নটিকে দুপ হিসাবে চিহ্নিত করি না তবে এটি ব্যতিক্রম। সম্পূর্ণতার জন্য কিছু জিনিস সরানো প্রয়োজন হতে পারে।
মাইকেল ডুরান্ট

প্রকৃতপক্ষে অন্য উত্তরটি খুব স্পষ্টভাবে উল্লেখ করেছে --headerএবং এটির কোনও উত্তর নেই
মাইকেল ডুরান্ট

উত্তর:


15

মন্তব্য করার মতো যথেষ্ট খ্যাতি নেই তাই এটিকে সাহায্যের আশায় উত্তর হিসাবে ছেড়ে দিন।

curl -L -v --post301 --post302 -i -X PUT -T "${aclfile}"  \
  -H "Date: ${dateValue}" \
  -H "Content-Type: ${contentType}" \
  -H "Authorization: AWS ${s3Key}:${signature}" \
  ${host}:${port}${resource}

এটি আমি এস 3 বালতি এসিএল পুট অপারেশনের জন্য ব্যবহার করেছি। শিরোনামগুলি -H এবং শরীরে রয়েছে যা একটি এক্সএমএল ফাইল} {অ্যাক্লিফাইল} এর নিম্নলিখিত -T। আপনি আউটপুট থেকে এটি দেখতে পারেন:

/aaa/?acl
* About to connect() to 192.168.57.101 port 80 (#0)
*   Trying 192.168.57.101...
* Connected to 192.168.57.101 (192.168.57.101) port 80 (#0)
> PUT /aaa/?acl HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 192.168.57.101
> Accept: */*
> Date: Thu, 18 Aug 2016 08:01:44 GMT
> Content-Type: application/x-www-form-urlencoded; charset=utf-8
> Authorization: AWS WFBZ1S6SO0DZHW2LRM6U:r84lr/lPO0JCpfk5M3GRJfHdUgQ=
> Content-Length: 323
> Expect: 100-continue
>
< HTTP/1.1 100 CONTINUE
HTTP/1.1 100 CONTINUE

* We are completely uploaded and fine
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< x-amz-request-id: tx00000000000000000001f-0057b56b69-31d42-default
x-amz-request-id: tx00000000000000000001f-0057b56b69-31d42-default
< Content-Type: application/xml
Content-Type: application/xml
< Content-Length: 0
Content-Length: 0
< Date: Thu, 18 Aug 2016 08:01:45 GMT
Date: Thu, 18 Aug 2016 08:01:45 GMT

<
* Connection #0 to host 192.168.57.101 left intact

যদি ইউআরএল প্যারামগুলিতে "+" এর মতো বিশেষ লক্ষণ থাকে তবে সেগুলির প্রতিটি প্যারামের জন্য --data-urlencode ব্যবহার করুন (বিশেষ চিহ্ন রয়েছে):

curl -G -H "Accept:..." -H "..." --data-urlencode "beginTime=${time}+${zone}" --data-urlencode "endTime=${time}+${zone}" "${url}"

57

এইচটিটিপি "পরামিতি" URL এর অংশ:

"http://localhost/?name=value&othername=othervalue"

বেসিক প্রমাণীকরণের একটি পৃথক বিকল্প রয়েছে, কাস্টম শিরোনাম তৈরি করার দরকার নেই:

-u "user:password"

পোষ্ট "বডি" উভয় --data(জন্য application/x-www-form-urlencoded) বা --form(জন্য multipart/form-data) এর মাধ্যমে প্রেরণ করা যেতে পারে :

-F "foo=bar"                  # 'foo' value is 'bar'
-F "foo=<foovalue.txt"        # the specified file is sent as plain text input
-F "foo=@foovalue.txt"        # the specified file is sent as an attachment

-d "foo=bar"
-d "foo=<foovalue.txt"
-d "foo=@foovalue.txt"
-d "@entirebody.txt"          # the specified file is used as the POST body

--data-binary "@binarybody.jpg"

সুতরাং, সংক্ষেপে:

curl -d "this is body" -u "user:pass" "http://localhost/?ss=ss&qq=11"

@ এমারসন: এটি হওয়া উচিত; পিএইচপি'র মডিউলে মনে হয় যে সমস্ত সি ফাংশন মূল সি লিব্কারল রয়েছে এবং উপরেরটি একটি মোটামুটি বেসিক বৈশিষ্ট্য। তবে সঠিক ব্যবহারটি আমি জানি না। যদি এটি খুঁজে না পান তবে স্ট্যাক ওভারফ্লোতে জিজ্ঞাসা করুন।
মাধ্যাকর্ষণ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.