दिलचस्प पोस्ट
क्यूस्ट्रिंग को स्टडी :: स्ट्रिंग में कनवर्ट कैसे करें? एकाधिक $ दायरा गुण देखें संख्याओं को सी # शब्दों में परिवर्तित करना ADO.NET प्रदाता के लिए अपरिवर्तनीय नाम 'System.Data.SqlClient' के साथ कोई इकाई फ़्रेमवर्क प्रदाता नहीं मिला उद्देश्य-सी में दो तारीखों की तुलना कैसे करें इम्प्मेंट्स बनाम फैलता है: उपयोग करने के लिए कब? क्या फर्क पड़ता है? कैसे एक बास चर से व्हाइटस्पेस ट्रिम करने के लिए? जावा में उदाहरण से बचना MySQL में संख्याओं की एक श्रेणी उत्पन्न करना preg_match का उपयोग करके यूट्यूब वीडियो आईडी पार्स करें प्रतिशत ऊँचाई एचटीएमएल 5 / सीएसएस एक फ़ील्ड प्रारंभिक nonstatic क्षेत्र, विधि, या संपत्ति का संदर्भ नहीं दे सकते तालिका शीर्षक शीर्ष पर तय रहने के लिए जब उपयोगकर्ता इसे jQuery के दृश्य से बाहर स्क्रॉल करता है जब कोई सॉर्ट ऑर्डर निर्दिष्ट नहीं होता है तो मॉगोडाब सॉर्ट रिकॉर्ड कैसे करता है? मैं कैसे जांचूं अगर एक तत्व jQuery में छुपा हुआ है?

कैसे कर्ल के साथ PHP के लिए JSON पोस्ट करने के लिए

मैं बेस से दूर हो सकता है, लेकिन मैं इस दोबारा पीएचपी ढांचा ट्यूटोरियल में कर्ल पोस्ट कमांड चलाने के लिए दोपहर को कोशिश कर रहा हूं। मुझे समझ में नहीं आ रहा है कि PHP मेरे डाक की व्याख्या करने के लिए कैसा है, यह हमेशा एक खाली सरणी के रूप में आता है।

curl -i -X POST -d '{"screencast":{"subject":"tools"}}' \ http://localhost:3570/index.php/trainingServer/screencast.json 

(इसमें स्लेश मुझे बेवकूफ की तरह नहीं दिखाना है, लेकिन मैंने इसे PHP 5.2 का इस्तेमाल करते हुए विंडोज़ से निष्पादित किया, लिनक्स सर्वर पर लिनक्स कर्ल के साथ भी ऐसा ही प्रयास किया)

ऐसा कुछ होना चाहिए जो मुझे याद आ रहा है क्योंकि यह बहुत सीधा लगता है, पद को ठीक से नहीं समझाया गया है, अगर ऐसा होता है, तो सब कुछ महान काम करेगा

यह वही है जो मुझे वापस मिलता है:

 HTTP / 1.1 40 9 संघर्ष
 दिनांक: शुक्र, 01 मई 2009 22:03:00 GMT
 सर्वर: अपाचे / 2.2.8 (Win32) PHP / 5.2.6
 एक्स-पावर-द्वारा: PHP / 5.2.6
 ट्रांसफर एन्कोडिंग: चुने गए
 सामग्री-प्रकार: पाठ / html;  charset = iso-8859-1

 { "स्क्रीनकास्ट": { "id": अशक्त, "विषय": अशक्त, "शरीर": अशक्त,
          "DataUrl": अशक्त, "dataMedium": अशक्त, "createdOn": अशक्त, "लेखक": अशक्त}}

वेब के समाधान से एकत्रित समाधान "कैसे कर्ल के साथ PHP के लिए JSON पोस्ट करने के लिए"

जॉर्डन का विश्लेषण है कि $ _POST-array क्यों आबादी नहीं है सही है। हालांकि, आप उपयोग कर सकते हैं

 $data = file_get_contents("php://input"); 

बस http निकालने के लिए और इसे अपने आप को संभालना PHP इनपुट / आउटपुट स्ट्रीम देखें

एक प्रोटोकॉल के नजरिए से यह वास्तव में अधिक सही है, क्योंकि आप वास्तव में एचटीटीपी मल्टीपार्ट फॉर्म डेटा को भी प्रोसेसिंग नहीं कर रहे हैं। इसके अलावा, आपके अनुरोध पोस्ट करते समय आवेदन / जेएसन सामग्री-प्रकार का उपयोग करें।

आम तौर पर पैरामीटर- -d को फ़ॉर्म-एन्कोडेड के रूप में परिभाषित किया जाता है। आपको -H पैरामीटर की आवश्यकता है:

 curl -v -H "Content-Type: application/json" -X POST -d '{"screencast":{"subject":"tools"}}' \ http://localhost:3570/index.php/trainingServer/screencast.json 

मेरा मानना ​​है कि आपको एक रिक्त सारणी मिल रही है क्योंकि PHP पोस्ट किए गए डेटा को एक क्विज़स्ट्रिंग प्रारूप (कुंजी = मान और key1 = value1) की उम्मीद कर रहा है।

अपना कर्ल अनुरोध बदलने का प्रयास करें:

 curl -i -X POST -d 'json={"screencast":{"subject":"tools"}}' \ http://localhost:3570/index.php/trainingServer/screencast.json 

और देखो कि क्या यह किसी भी मदद करता है

आपको कुछ अतिरिक्त ध्वज सेट करने की आवश्यकता है ताकि कर्ल JSON के रूप में डेटा भेज सके।

आदेश

 $ curl -H "Content-Type: application/json" \ -X POST \ -d '{"JSON": "HERE"}' \ http://localhost:3000/api/url 

झंडे

  • -H : कस्टम हेडर, अगला तर्क हैडर होने की संभावना है
  • -X : कस्टम HTTP क्रिया, अगला तर्क क्रिया होने की उम्मीद है
  • -d : एक HTTP पोस्ट अनुरोध में डेटा के रूप में अगली तर्क भेजता है

साधन

  • कर्ल मेनपेज
  • कर्ल उदाहरण

आपको इस तरह के उद्धरणों से बचना चाहिए:

 curl -i -X POST -d '{\"screencast\":{\"subject\":\"tools\"}}' \ http://localhost:3570/index.php/trainingServer/screencast.json