2010-03-03 11 views
20

मैं सिर्फ एक समारोह है कि 2 पैरामीटर ले जा सकते हैं करना चाहते हैं? धन्यवाद।पैरामीटर के शब्दकोश के साथ, यूआरएल में एक पोस्ट भेजने के लिए मैं पाइथन के प्रेजेंटप्लिब का उपयोग कैसे करूं?</p> <ul> <li>यूआरएल</li> <li>मापदंडों</li> </ul> <p>यह कैसे httplib साथ किया जा सकता का एक शब्दकोश में पोस्ट करने के लिए:

+1

urllib2 का उपयोग करें। http://stackoverflow.com/questions/321582/urllib2-data-sending। –

उत्तर

38

Python documentation से:

>>> import httplib, urllib 
>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0}) 
>>> headers = {"Content-type": "application/x-www-form-urlencoded", 
...   "Accept": "text/plain"} 
>>> conn = httplib.HTTPConnection("musi-cal.mojam.com:80") 
>>> conn.request("POST", "/cgi-bin/query", params, headers) 
>>> response = conn.getresponse() 
>>> print response.status, response.reason 
200 OK 
>>> data = response.read() 
>>> conn.close() 
+29

क्रेडिट जहां क्रेडिट देय है: इसे सीधे http://docs.python.org/release/2.6/library/httplib.html (या 2.5.2 या इससे पहले) से हटा दिया गया था, यह वर्षों से अधिक नहीं बदला है) – dland

+0

क्या पैरामीटर उस प्रारूप में होना चाहिए? क्या वे कच्चे पाठ हो सकते हैं? –

+0

हाँ आप कच्चे पाठ को पैराम्स के रूप में पास कर सकते हैं, 'urllib.urlencode' स्ट्रिंग को पार करने के लिए यूआरएल एन्कोडिंग का ख्याल रखता है, अगर आप इसे प्रिंट करते हैं तो आप देखेंगे कि यह सिर्फ एक स्ट्रिंग – Ole

10

एक सरल एक, बस urllib का उपयोग कर:

import urllib 
params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0}) 
f = urllib.urlopen("http://www.example.org/cgi-bin/query", params) 
print f.read() 

अजगर डॉक्स में मिला के लिए urllib module

+5

क्षमा करें, लेकिन यह शायद सबसे अधिक करता है HTTP प्राप्त करें, कोई पोस्ट नहीं – hko

+3

@hko नहीं, यह उस urllib पृष्ठ पर POST उदाहरण से है। ध्यान दें कि पैरा% 'पैराम 'के बजाय' पैरा 'के साथ जोड़े गए हैं। –