दिलचस्प पोस्ट
एक प्रतिनिधि उद्देश्य-सी में कैसे काम करता है? पायथन और urllib2 के साथ स्रोत इंटरफ़ेस कैसे JTable में कोशिकाओं केंद्र के लिए PHP कोड से टिप्पणियों को स्वचालित रूप से निकालने का सर्वोत्तम तरीका मैं ASP.NET MVC में एक मैत्रीपूर्ण यूआरएल कैसे बना सकता हूं? मैं TextView का रंग हिस्सा कैसे बदल सकता / सकती हूं? एंड्रॉइड डिवाइस पर उपलब्ध स्थान की जांच कैसे करें? एसडी कार्ड पर? डीजांगो और पायथन का उपयोग करते हुए JSON प्रतिक्रिया बनाना NSArray को एनएसडीएटा में कैसे परिवर्तित किया जाए? $ (एसएल) के बीच महत्वपूर्ण अंतर क्या हैं .बिंड ("क्लिक करें", $ (एसएल)। क्लिक करें (, $ (sel) .live ("click", $ (sel) .on ("click"? HiveContext के साथ एकाधिक स्पार्क एप्लिकेशन मैं एक सेवा के रूप में विंडोज जीयूआई एप्लीकेशन कैसे चला सकता हूं? चहचहाना बूटस्ट्रैप के साथ एक 2 कॉलम (फिक्स्ड – द्रव) लेआउट कैसे बनाया जाए? एक WPF Treeview में SelectedItem के लिए बाइंडिंग डेटा जावा में कानूनी पहचानकर्ता

कैसे कर्ल के साथ 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