কার্ল কমান্ডে ইউআরএল এনকোড করার কোনও উপায়?


106

আমার কিছু ইউআরএল রয়েছে যা এর ক্যোয়ারী প্যারামে স্থান রয়েছে। আমি এটি কার্ল ব্যবহার করতে চাই, যেমন

curl -G "http://localhost:30001/data?zip=47401&utc_begin=2013-8-1 00:00:00&utc_end=2013-8-2 00:00:00&country_code=USA"

যা দেয়

Malformed Request-Line

আমার অনুধাবন অনুসারে ও / পি ক্যোয়ার প্যারামে উপস্থিত স্পেসের কারণে।

ইউআরএলটি কার্ল কমান্ড সরবরাহ করার পূর্বে স্বয়ংক্রিয়ভাবে এনকোড করার কোনও উপায় নেই?

উত্তর:


170

curlইউআরএল-এনকোডিংটিকে অভ্যন্তরীণভাবে সমর্থন করে --data-urlencode:

$ curl -G -v "http://localhost:30001/data" --data-urlencode "msg=hello world" --data-urlencode "msg2=hello world2"

-G ইউআরএল-এ ডেটা যুক্ত করার জন্যও প্রয়োজনীয়।

শিরোনামগুলি সন্ধান করুন

> GET /data?msg=hello%20world&msg2=hello%20world2 HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu)
> Host: localhost
> Accept: */*

তাহলে কি msg = '='?
অরুলিয়ান ওমস

কার্ল ডক থেকে: নোট করুন যে নামের অংশটি (ইতিমধ্যে এই ক্ষেত্রেটি) ইতিমধ্যে ইউআরএল-এনকোড হওয়া উচিত। এছাড়াও আপনি - অনুরোধ মোছার মতো কিছু নির্দিষ্ট করতে পারেন এবং এটি GET এর পরিবর্তে মুছে ফেলার পদ্ধতি হবে। আদেশের বিষয়টি নিশ্চিত কিনা তা নিশ্চিত নয়।
ফেডেরিকো

@ ড্যাম্প্যাট যখন অনুরোধটির দুটি পরামিতি থাকে তখন কী হয় "msg1=Hello&msg2=World"? এটি &প্যারামিটারগুলির মধ্যে এনকোড করবে যা সার্ভারে প্রেরণে ভুল জিনিসটির অর্থ হবে
গণেশ সাতপুট

10
@ গণেশ স্যাটপুট: --data-urlencodeপ্রতিটি কী-মান জোড়ার জন্য একাধিক পরামিতি ব্যবহার করুন ।
মার্টিজন পিটারস

@ মার্তিজজনপিটার্স হ্যাঁ ওই কাজগুলো. উত্তরের জন্য ধন্যবাদ
গণেশ সাতপুট

7
 curl -G "$( echo "$URL" | sed 's/ /%20/g' )"

$URLআপনি যে url টি অনুবাদ করতে চান তা কোথায় ।

ইউআরএলটিতে একাধিক ধরণের অনুবাদ (এনকোডিং) থাকতে পারে, তাই আপনি এটি করতে চাইতে পারেন:

curl -G "$(perl -MURI::Escape -e 'print uri_escape shift, , q{^A-Za-z0-9\-._~/:}' -- "$URL")"

পরিবর্তে.


1
নোট করুন যে ইউআরএলে অক্ষর echo "$URL" | sed 's/ /%20/'থাকলে সঠিক কাজটি করবে না %। এছাড়াও, স্পেসগুলি সাধারণত +(এবং +যেমন %2b) হিসাবে এনকোড থাকে । আমি পার্ল সমাধানটি সুপারিশ করি যা নির্ভরযোগ্য।
গিলস

1
sed 's/ /%20/g'অনুবাদ করার জন্য যদি আপনার একাধিক জায়গা থাকে ...
সেপ্টেবার্ট

দ্রষ্টব্য আমাকে পার্ল ইউআরআই :: এস্কেপ মডিউল ইনস্টল করতে হয়েছিল।
বুজ 3791
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.