मैं पाइथन (v3.3 का उपयोग करके) और वेब प्रोग्रामिंग के लिए नौसिखिया हूं और मैं पूरी रात एक समस्या से जूझ रहा हूं। मैं अपने सर्वर के लिए एक पोस्ट कॉल जारी करने कर रहा हूँ और यह कुछ डेटा भेजने इस प्रकार है:मैं BaseHTTPRequestHandler का उपयोग कर अपने सर्वर पर भेजे गए डेटा तक कैसे पहुंच सकता हूं?
DATA = {"listName":"Test list","listDesc":"A test list with test stuff in it.","refreshMode":"Replace","DBKey":"1","UserDisplaySeq":"1"}
DATA = json.dumps(DATA)
METHOD = "POST"
DATA = DATA.encode("utf-8")
params = "account_id=acct 2"
try:
URL = "http://localhost:8080/lists?" + quote_plus(params)
request = urllib.request.Request(url=URL,data=DATA,method=METHOD)
response = urllib.request.urlopen(request)
...
इस प्रकार मैं भी एक अनुरोध हैंडलर कोडित है (वहाँ डीबगिंग उद्देश्यों के लिए यहाँ में प्रिंट बयान की बहुत हैं):
class MyHandler(BaseHTTPRequestHandler):
...
def do_POST(self):
length = int(self.headers['Content-Length'])
print("HEADERS: ", self.headers)
print (str(length))
print(self.rfile)
post_data = urllib.parse.parse_qs(self.rfile.read(length).decode('utf-8'))
print(post_data)
यह कंसोल के लिए निम्न परिणाम प्रिंट:
Starting thread
started httpserver...
HEADERS: Accept-Encoding: identity
User-Agent: Python-urllib/3.3
Content-Length: 138
Content-Type: application/x-www-form-urlencoded
Host: localhost:8080
Connection: close
138
<_io.BufferedReader name=404>
{}
मेरे सवालों का:
1) सर्वर (do_POST) में, मैं कैसे करना है डेटा का उपयोग करें जो मुझे लगता है कि मैं अपने अनुरोध के साथ भेज रहा हूं (यानी। { "Listname": "टेस्ट सूची", "listDesc": "एक परीक्षण ...)
2) मेरे अनुरोध भी पहली जगह में डेटा भेजने है
3) वहाँ एक जगह है? जहां इस नौसिखिया-सुलभ संदर्भ में प्रलेखित है?
आप पाते हैं कि फ्लास्क या बोतल जैसे वेब ढांचे का उपयोग करके यह सामान बहुत आसान हो जाएगा। – Blender
@ ब्लेंडर - सलाह के लिए धन्यवाद। मैंने बोतल का उपयोग करने की कोशिश की लेकिन यह वास्तव में एचटीएमएल का उपयोग करने के लिए तैयार था, जो हमारे मामले में, हम इसका उपयोग नहीं कर रहे हैं। हम एकाधिक सर्वरों में काम को संतुलित करने के लिए एक शानदार एप्लिकेशन लिख रहे हैं और इसमें वास्तव में ब्राउज़र घटक नहीं है। इन सभी चीजों की तरह, मुझे बोतल के दस्तावेज भी बहुत अच्छे लगते हैं यदि आप पहले से ही अपनी सामग्री जानते थे लेकिन शुरुआती लोगों के लिए वास्तव में कठिन है जिनके पास वेब अवधारणाओं में पृष्ठभूमि नहीं है। – Ben