दिलचस्प पोस्ट
अद्वितीय यादृच्छिक संख्याएं चुनें अगर बनाम स्विच स्पीड SKScene में बटन सेट करना क्या सीएसएस में एक आईएमजी टैग की एक सीआरटी विशेषता के बराबर सेट करना संभव है? एक UIView के लिए कलंक कैसे लागू करें? रूबी रेगुलर एक्सप्रेशन के बीच अंतर \ ए \ z और ^ $ के बीच का अंतर कौन से एंड्रॉइड आईडीई बेहतर है – एंड्रॉइड स्टूडियो या एक्लिप्स? केवल एसक्यूएल का उपयोग कर SQL सर्वर 2005 छवि फ़ील्ड में चित्र डालें jquery क्लोन फार्म फ़ील्ड और वेतन वृद्धि आईडी कैसे एक आइटम अपनी संभावना से चुनने के लिए? प्रोटोकॉल स्वयं के अनुरूप नहीं है? कन्स्ट्रक्टर फ़ंक्शन बनाम फ़ैक्टरी फ़ंक्शन एंड्रॉइड सपोर्ट लाइब्रेरी अपडेट करें 23.2.0 कारण त्रुटि: XmlPullParserException बाइनरी XML फ़ाइल लाइन # 17 <वेक्टर> टैग की आवश्यकता है viewportWidth> 0 फ्रेमवर्क नहीं मिला GoogleToolboxForMac AngularJS – इनपुट पाठ बॉक्स पर मूल्य विशेषता को अनदेखा किया जाता है जब कोई एनजी-मॉडल उपयोग किया जाता है?

क्या मुझे URL- सांकेतिक शब्दों में बदलना डाक डेटा चाहिए?

मैं किसी बाहरी एपीआई को डाटा पोस्ट कर रहा हूं (पीएचपी का उपयोग कर यदि यह प्रासंगिक है)।

क्या मुझे पोस्ट वेरिएबल यूआरएल-सांकेतिक शब्दों में बदलना चाहिए जो मैं पास करता हूँ?

या मुझे केवल यूआरएल-सांकेतिक शब्दों में कहें डेटा प्राप्त करने की आवश्यकता है?

धन्यवाद!

अद्यतनः यह मेरी PHP है, अगर यह प्रासंगिक है:

$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); 

वेब के समाधान से एकत्रित समाधान "क्या मुझे URL- सांकेतिक शब्दों में बदलना डाक डेटा चाहिए?"

सामान्य जवाब

आपके प्रश्न का सामान्य उत्तर यह है कि यह निर्भर करता है। और आप निर्दिष्ट करते हैं कि आपके "सामग्री-प्रकार" HTTP हेडर में क्या है।

"Application / x-www-form-urlencoded" का मान का अर्थ है कि आपके डाक निकाय को जीईटी पैरामीटर स्ट्रिंग की तरह एन्कोडेड होना चाहिए। "मल्टीपार्ट / फॉर्म-डेटा" का मान है कि आप सामग्री सीमांकक का उपयोग करेंगे और कन्टैंट को कूटबन्धन नहीं करेंगे।

यदि आपको अधिक जानकारी चाहिए तो इस उत्तर में एक बहुत अधिक विस्तृत व्याख्या है ।


विशिष्ट उत्तर

आपके द्वारा उपयोग किए जा रहे PHP पुस्तकालयों के लिए एक उत्तर के लिए (कर्ल), आपको यहां दस्तावेज़ीकरण पढ़ना चाहिए।

यहां प्रासंगिक जानकारी दी गई है:

CURLOPT_POST

एक नियमित HTTP पोस्ट करने के लिए सही यह पोस्ट सामान्य ऐप्लिकेशन / एक्स-www-फ़ॉर्म-यूआरएलएन कोड वाला प्रकार है, जो सबसे सामान्यतः एचटीएमएल रूपों द्वारा उपयोग किया जाता है।

CURLOPT_POSTFIELDS

एक HTTP "पोस्ट" ऑपरेशन में पोस्ट करने के लिए पूर्ण डेटा। फ़ाइल पोस्ट करने के लिए, @ के साथ एक फ़ाइल नाम भरें और पूर्ण पथ का उपयोग करें। फ़ाइल प्रकार को फ़ाइल नाम को '' प्रकार = माइम टाइप '' प्रारूप में टाइप करके स्पष्ट रूप से निर्दिष्ट किया जा सकता है यह पैरामीटर या तो urlencoded स्ट्रिंग के रूप में पारित किया जा सकता है जैसे 'पैरा 1 = वैल 1 और पैरा 2 = वैल 2 और …' या मान के रूप में फ़ील्ड नाम के साथ एक सरणी के रूप में और मान डेटा के रूप में। यदि मान एक सरणी है, तो सामग्री-प्रकार हैडर को multipart / फ़ॉर्म-डेटा पर सेट किया जाएगा। PHP 5.2.0 के अनुसार, यदि फाइल इस विकल्प को @ उपसर्ग के साथ पास कर दी जाती है, तो मान एक सरणी होना चाहिए।

@ डौगू ने इस सवाल का स्पष्ट उत्तर दिया है, लेकिन मैं अभी भी डग के अंक की व्याख्या के लिए कुछ कोड जोड़ना चाहता हूं। (और ऊपर दिए गए कोड में सही त्रुटियां)

समाधान 1: सामग्री-प्रकार हैडर के साथ POST डेटा यूआरएल-एन्कोड करें: application / x-www-form-urlencoded

नोट: आपको $ _POST [] फ़ील्ड एक-एक करके urlencode की आवश्यकता नहीं है, 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: सरणी को सीधे यूआरएल-एन्कोडिंग के बिना पोस्ट डेटा के रूप में पास करें, जबकि कंटेंट-टाइप हैडर को बहुस्तृत / फॉर्म-डेटा पर सेट किया जाएगा।

 $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); 

दोनों कोड स्निपेट काम करते हैं, लेकिन अलग HTTP हेडर और निकायों का उपयोग करते हुए

कर्ल आपके लिए डेटा एन्कोड करेंगे, बस अपने कच्चे फ़ील्ड डेटा को फ़ील्ड सरणी में छोड़ दें और इसे "जाओ" में बताएं