मैं वर्तमान में पाइथन 2.7 अनुरोध लाइब्रेरी का उपयोग कर रहा हूं और ऑर्डर किए गए हेडर के लिए कोई समर्थन नहीं है। मैं पोस्ट के लिए आदेशित डेटा डाल सकता हूं और प्राप्त कर सकता हूं (एक आदेशित शब्दकोश की तरह) लेकिन हेडर के लिए कोई समर्थन नहीं है। यहां तक कि पाइथन 3पायथन - ऑर्डर किए गए हेडर HTTP अनुरोध
मुझे HTTP प्रोटोकॉल आरएफसी पता है, यह इंगित करता है कि हेडर का क्रम महत्वहीन है, लेकिन समस्या यह है कि जिस तीसरे पक्ष की सेवा मैं कार्यान्वित कर रहा हूं वह काम नहीं करता है जब तक कि हेडर क्रम में न हों। मुझे यह पता है क्योंकि मैंने अन्य भाषाओं में ऑर्डर करने वाले हेडर अनुरोधों को लागू किया है और यह काम करता है (जावा की तरह) और हां, मैं इसमें से 100% निश्चित हूं, क्योंकि मैंने यह सुनिश्चित करने के लिए निरीक्षण किया कि यह अनुरोधों के बीच एकमात्र अंतर है । लेकिन मेरे पास पाइथन में पहले से ही 5,000+ रेखाएं हैं इसलिए माइग्रेट करना इस तरह की समस्या के कारण इतनी दर्दनाक निर्णय है।
एकमात्र समाधान मैंने सोचा है कि टीसीपी के शीर्ष पर http प्रोटोकॉल को लागू करना है, लेकिन यह एक स्मार्ट समाधान नहीं है। मेरे पास उपलब्ध समाधान के रूप में कोड की समान गुणवत्ता नहीं हो सकती है और यह मेरे कोड के लिए विफलता का एक संभावित बिंदु है।
एक सरल कोड उदाहरण देखें मैं नीचे है:
data=(("param1","something"),
("param2","something_else"))
headers={'id': 'some_random_number',
'version':'some_random_number' ,
'signature':'some_random_number' ,
'Content-Type':'application/x-www-form-urlencoded' ,
'charset':'utf-8' ,
'Content-Length':str(len(urllib.urlencode(data))) ,
'name':'random' ,
'User-Agent':'Firefox' ,
'Connection':'Keep-Alive' ,
'Accept-Encoding':'gzip'}
requests.post("myservice.com",headers=headers, data=data)
अनुरोध हेडर के आदेश (, सिर्फ एक उदाहरण भर में अपनी बात पाने के लिए वास्तविक नहीं क्रम)
'version':'some_random_number'
'Accept-Encoding':'gzip'
'id': 'some_random_number'
'User-Agent':'Firefox'
'signature':'some_random_number'
'Connection':'Keep-Alive'
'Content-Type':'application/x-www-form-urlencoded'
'charset':'utf-8'
'name':'random'
ऐसे ही भेज रहा है
जो मेरे लिए एक समस्या है। मुझे नहीं पता कि इस बिंदु पर क्या करना है। किसी भी मदद की बहुत सराहना की। मैं पुस्तकालय urllib की कोशिश की कोई समर्थन
आदेश दिया गया था आदेश काम? –
नहीं, ऑर्डर लाइब्रेरी का उपयोग करते हुए .items() अपवाद, अनुरोध पुस्तकालय के लिए देता है, क्योंकि अनुरोध लाइब्रेरी आइटम() विधि का उपयोग करके हेडर को पार करती है और आदेशित आदेश के लिए ऐसा कोई समर्थन नहीं है। यह कुछ पुराने अनुरोध संस्करण में काम करता था जो मैंने दूसरे स्टैक ओवरफ्लो प्रश्न पर पढ़ा था। –
क्या आप एक कस्टम dict-like ऑब्जेक्ट को 'अनुरोध' पर पास कर सकते हैं जिसमें एक कस्टम '.items()' है जो हेडर के आदेश को नियंत्रित करता है? यदि 'अनुरोध' उस आदेश को रखता है, तो – user2722968