कोई भी ट्यूटोरियल इंगित कर सकता है जो मुझे दिखाता है कि JSON प्रारूप में डेटा के साथ urllib2 का उपयोग करके POST अनुरोध कैसे करें?urllib2 और json
उत्तर
उदाहरण - भेजने कुछ डेटा एक पोस्ट डेटा के रूप में JSON के रूप में इनकोडिंग:
import json
import urllib2
data = json.dumps([1, 2, 3])
f = urllib2.urlopen(url, data)
response = f.read()
f.close()
आप निश्चित रूप से एक उचित अजाक्स अनुरोध करने के लिए शीर्ष लेख को हैक करना चाहते हैं:
headers = {'X_REQUESTED_WITH' :'XMLHttpRequest',
'ACCEPT': 'application/json, text/javascript, */*; q=0.01',}
request = urllib2.Request(path, data, headers)
response = urllib2.urlopen(request).read()
और json.loads को सर्वर-पक्ष पर पोस्ट।
संपादित करें: वैसे, आपको urllib.urlencode(mydata_dict)
उन्हें भेजने से पहले होना चाहिए। यदि आप नहीं करते हैं, तो POST वह नहीं होगा जो सर्वर
urlencode यूआरएल प्रारूप में एन्कोडेड डेटा भेज देगा, जेसन में नहीं। – kolinko
मेसा का उत्तर केवल तभी काम करता है जब सर्वर सामग्री-प्रकार शीर्षलेख की जांच करने के लिए परेशान नहीं है। यदि आप वास्तव में काम करना चाहते हैं तो आपको एक सामग्री-प्रकार शीर्षलेख निर्दिष्ट करना होगा। यहाँ Messa के जवाब सामग्री-प्रकार शीर्ष लेख शामिल करने के लिए संशोधित है:
import json
import urllib2
data = json.dumps([1, 2, 3])
req = urllib2.Request(url, data, {'Content-Type': 'application/json'})
f = urllib2.urlopen(req)
response = f.read()
f.close()
पायथन 3 और urllib के साथ काम करते हुए, अतिरिक्त रूप से मुझे यह काम करने वाला 'डेटा = json.dumps ([1, 2, 3]) प्राप्त करने के लिए अपने जेसन पार्स किए गए डेटा को एन्कोड करना पड़ा। एनकोड ("utf8)'। Http: // देखें stackoverflow.com/a/5441022/3757139 – Samuel
जो भी urllib सामग्री-लंबाई यह पता लगाने की उपयोग कर रहा है json से उलझन में मिल रहा है, तो आप की गणना करने के अपने आप को कि है।
import json
import urllib2
data = json.dumps([1, 2, 3])
clen = len(data)
req = urllib2.Request(url, data, {'Content-Type': 'application/json', 'Content-Length': clen})
f = urllib2.urlopen(req)
response = f.read()
f.close()
मुझे यह पता लगाने के लिए हमेशा के लिए ले लिया, इसलिए मुझे उम्मीद है कि यह किसी और की मदद करेगा।
जेसन प्रतिक्रिया पढ़ने के लिए json.loads()
पढ़ें। नमूना यहाँ है।
import json
import urllib
import urllib2
post_params = {
'foo' : bar
}
params = urllib.urlencode(post_params)
response = urllib2.urlopen(url, params)
json_response = json.loads(response.read())
यह JSON नहीं भेजता है, इसे केवल प्राप्त करता है। – tsturzl
यह वही मेरे लिए काम किया है:
import json
import requests
url = 'http://xxx.com'
payload = {'param': '1', 'data': '2', 'field': '4'}
headers = {'content-type': 'application/json'}
r = requests.post(url, data = json.dumps(payload), headers = headers)
मुझे नहीं लगता कि अनुरोध पैकेज मानक लाइब्रेरी का हिस्सा है। –
हालांकि 'अनुरोध' पैकेज मानक lib का हिस्सा नहीं है, यह आसानी से पाइप का उपयोग कर स्थापित किया जाता है। उन लोगों के लिए बिल्कुल सही जो वर्चुअल वातावरण में काम कर रहे हैं। – Will
- 1. पायथन - urllib2 और cookielib
- 2. पायथन और urllib2
- 3. पायथन: Urllib2 और OpenCV
- 4. urllib2
- 5. urllib2
- 6. urllib2
- 7. urllib2
- 8. पायथन urllib2: यूआरएल
- 9. HTTPS urllib2
- 10. urllib2.URLError
- 11. पाइथन urllib2
- 12. JSON diff, कुछ JSON एक और JSON
- 13. urllib2.urlopen
- 14. urllib2 स्ट्रिंग
- 15. JSON ई और JSON E
- 16. पायथन और urllib2 के साथ विंडोज प्रमाणीकरण
- 17. पाइथन और urllib2 के साथ स्रोत इंटरफेस
- 18. पायथन urllib2 HTTPS और प्रॉक्सी एनटीएलएम प्रमाणीकरण
- 19. पायथन urllib2 त्रुटियां
- 20. पायथन URLLib/URLLib2 पोस्ट
- 21. बताएँ urllib2 कस्टम DNS
- 22. कुकीज़ के साथ urllib2
- 23. पायथन urllib2 प्रतिक्रिया शीर्षलेख
- 24. अजगर urllib2 urlopen प्रतिक्रिया
- 25. urllib2 में कैशिंग?
- 26. हैंडलिंग आरएसएस अजगर/urllib2
- 27. रेडिट एपीआई लौटने बेकार JSON
- 28. JSON अनुरोध और RestSharp
- 29. JQuery और JSON तत्व
- 30. स्थानीय भंडारण और JSON
कई प्रणालियों के लिए यह काम नहीं करेगा। नीचे बॉब वान ज़ेंट का जवाब देखें। – speedplane