পোষ্টের ডেটা ইউআরএল-এনকোড করা উচিত?


122

আমি কোনও বাহ্যিক এপিআই-তে ডেটা পোস্ট করছি (পিএইচপি ব্যবহার করে, এটি প্রাসঙ্গিক হলে)।

আমি যে পোষ্ট ভেরিয়েবলগুলি পাস করব তা URL- এনকোড করা উচিত?

অথবা আমার কেবল জিইটি ডেটা ইউআরএল-এনকোড করা দরকার?

ধন্যবাদ!

আপডেট: এটি আমার পিএইচপি, যদি এটি সম্পর্কিত হয়:

$fields = array(
    'mediaupload'=>$file_field,
    'username'=>urlencode($_POST["username"]),
    'password'=>urlencode($_POST["password"]),
    'latitude'=>urlencode($_POST["latitude"]),
    'longitude'=>urlencode($_POST["longitude"]),
    'datetime'=>urlencode($_POST["datetime"]),
    'category'=>urlencode($_POST["category"]),
    'metacategory'=>urlencode($_POST["metacategory"]),
    'caption'=>($_POST["description"])
);
$fields_string = http_build_query($fields);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);

1
এটি এপিআই, রেফারেন্সের জন্য: ਚੱਕਰস্ট্রেটস.টাইন / অ্যাপি - এটি কী প্রত্যাশা করে তা নির্দিষ্ট করে বলে মনে হচ্ছে না।
রিচার্ড

উত্তর:


136

সাধারণ উত্তর

আপনার প্রশ্নের সাধারণ উত্তর এটি নির্ভর করে। এবং আপনি এইচটিটিপি শিরোনামে আপনার "বিষয়বস্তুর ধরণ" কী তা নির্দিষ্ট করে সিদ্ধান্ত নেবেন।

"অ্যাপ্লিকেশন / x-www-form-urlencoded" এর মানটির অর্থ হল আপনার GO পরামিতি স্ট্রিংয়ের মতো আপনার পোষ্ট বডি ইউআরএল এনকোড করা দরকার। "মাল্টিপার্ট / ফর্ম-ডেটা" এর মানটির অর্থ হল আপনি কন্টেন্ট ডিলিমিটর ব্যবহার করবেন এবং সামগ্রীটি এনকোডিং করবেন না।

আপনি আরও তথ্য চাইলে এই উত্তরটির আরও অনেক বিশদ ব্যাখ্যা রয়েছে


নির্দিষ্ট উত্তর

আপনি যে পিএইচপি লাইব্রেরি (সিআরএল) ব্যবহার করছেন তার সুনির্দিষ্ট উত্তরের জন্য আপনার এখানে ডকুমেন্টেশনটি পড়া উচিত ।

এখানে সম্পর্কিত তথ্য:

CURLOPT_POST

নিয়মিত HTTP পোষ্ট করতে সত্য UE এই পোস্টটি হ'ল এইচটিএমএল ফর্মগুলি দ্বারা ব্যবহৃত সাধারণত অ্যাপ্লিকেশন / এক্স-www-ফর্ম-urlncoded ধরণের।

CURLOPT_POSTFIELDS

কোনও HTTP "পোস্ট" অপারেশন পোস্ট করার জন্য সম্পূর্ণ ডেটা data একটি ফাইল পোস্ট করতে, @ দিয়ে একটি ফাইলের নাম প্রিপেন্ড করুন এবং পুরো পথটি ব্যবহার করুন। '; টাইপ = মিমিটাইপ' বিন্যাসে টাইপ সহ ফাইলের নাম অনুসরণ করে ফাইল টাইপ স্পষ্টভাবে নির্দিষ্ট করা যেতে পারে। এই প্যারামিটারটি হয় 'প্যারা 1 = ভাল 1 এবং প্যারা 2 = ভাল 2 এবং ...' এর মতো urlencoded স্ট্রিং হিসাবে বা ক্ষেত্রের নাম হিসাবে কী এবং ক্ষেত্রের ডেটা হিসাবে মান হিসাবে একটি অ্যারে হিসাবে পাস হতে পারে। মানটি যদি একটি অ্যারে হয় তবে সামগ্রী-প্রকারের শিরোনামটি মাল্টিপার্ট / ফর্ম-ডেটাতে সেট করা হবে। পিএইচপি ৫.২.০ অনুসারে, ফাইলগুলি @ উপসর্গের সাথে এই বিকল্পটিতে পাঠানো হলে মানটি অবশ্যই একটি অ্যারে হওয়া উচিত।


9

@ ডগডাব্লু এই প্রশ্নের স্পষ্ট উত্তর দিয়েছে, তবে আমি ডগের পয়েন্টগুলি ব্যাখ্যা করতে এখানে কিছু কোড যুক্ত করতে চাই। (এবং উপরের কোডে সঠিক ত্রুটি)

সমাধান 1: ইউআরএল-একটি সামগ্রীর ধরণের শিরোনাম সহ পোষ্ট ডেটা এনকোড: অ্যাপ্লিকেশন / x-www-form-urlencoded।

দ্রষ্টব্য: আপনার একের পর এক urlncode $ _POST [] ক্ষেত্রের দরকার নেই, http_build_query () ফাংশন খুব ভালভাবে urlencoding কাজ করতে পারে।

$fields = array(
    'mediaupload'=>$file_field,
    'username'=>$_POST["username"],
    'password'=>$_POST["password"],
    'latitude'=>$_POST["latitude"],
    'longitude'=>$_POST["longitude"],
    'datetime'=>$_POST["datetime"],
    'category'=>$_POST["category"],
    'metacategory'=>$_POST["metacategory"],
    'caption'=>$_POST["description"]
);

$fields_string = http_build_query($fields);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$fields_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);

সমাধান 2: URL- এনকোডিং ছাড়াই অ্যারেটিকে সরাসরি পোস্ট ডেটা হিসাবে পাস করুন, যখন সামগ্রী-প্রকারের শিরোনামটি মাল্টিপার্ট / ফর্ম-ডেটাতে সেট করা হবে।

$fields = array(
        'mediaupload'=>$file_field,
        'username'=>$_POST["username"],
        'password'=>$_POST["password"],
        'latitude'=>$_POST["latitude"],
        'longitude'=>$_POST["longitude"],
        'datetime'=>$_POST["datetime"],
        'category'=>$_POST["category"],
        'metacategory'=>$_POST["metacategory"],
        'caption'=>$_POST["description"]
    );

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_POST,1);
    curl_setopt($ch, CURLOPT_POSTFIELDS,$fields);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $response = curl_exec($ch);

উভয় কোড স্নিপেট কাজ করে, তবে বিভিন্ন এইচটিটিপি শিরোনাম এবং বডি ব্যবহার করে।


2

কার্ল আপনার জন্য ডেটা এনকোড করবে, কেবল আপনার কাঁচা ক্ষেত্রের ডেটা ফিল্ড অ্যারেতে ফেলে দিন এবং "যেতে" বলুন।


1
আমি একটি পিএইচপি কার্ল স্ক্রিপ্ট ঠিক করতে কয়েক ঘন্টা ব্যয় করেছি যেখানে টার্গেট এএসপি ওয়েবপৃষ্ঠা কার্ল পোস্ট ডেটা প্রেরণের পরে আমাকে একটি ত্রুটি পৃষ্ঠায় পুনঃনির্দেশ করছে এবং কেন এটি নির্ধারণ করতে অক্ষম। তারপরে url পোস্ট ডেটা এনকোড করার পরে এটি কাজ করে এবং আমি আমার প্রত্যাশিত ফলাফল পেতে শুরু করি।
রবি

1
দেখে মনে হচ্ছে এটি অ্যারে হয়, তবে এটি কার্ল দ্বারা স্বয়ংক্রিয়ভাবে urlncoded হবে। যদি এটি স্ট্রিং হিসাবে পাস করা হয় তবে আমাদের প্রথমে ইউরেনকোড করা দরকার।
রবি

2

উপরের পোস্টগুলিতে ইউআরএল এনকোডিং এবং এটি কীভাবে কাজ করে সম্পর্কিত প্রশ্নের উত্তর দেয় তবে মূল প্রশ্নগুলি "পোষ্টের ডেটা ইউআরএল-এনকোড করা উচিত?" যার উত্তর নেই।

ইউআরএল এনকোডিংয়ের সাথে আমার সাম্প্রতিক অভিজ্ঞতা থেকে, আমি প্রশ্নটি আরও বাড়িয়ে দিতে চাই। "জিইটি এইচটিটিপি পদ্ধতি হিসাবে পোষ্টের ডেটা ইউআরএল-এনকোড করা উচিত General উপাত্তগুলিতে ইউআরএল-এনকোডিং করার ভোক্তারা, কি পোষ্ট এইচটিটিপি পদ্ধতিতে ইউআরএল এনকোড করা কি স্থপতি এবং প্রযুক্তিগতভাবে সঠিক? "

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