authentication in urllib2 को संभालने के तरीके हैं, यदि आप हैं ऐसा करने बेसिक प्राधिकरण (जो प्रभावी रूप से उपयोगकर्ता नाम और पासवर्ड स्पष्ट पाठ में भेजने का मतलब है) तो आप क्या आप एक urllib2.Request और urllib2.urlopen साथ की जाने वाली समस्त कर सकते हैं:
import urllib2
def basic_authorization(user, password):
s = user + ":" + password
return "Basic " + s.encode("base64").rstrip()
req = urllib2.Request("http://localhost:8000/36576/speak.json",
headers = {
"Authorization": basic_authorization("7898678", "X"),
"Content-Type": "application/json",
# Some extra headers for fun
"Accept": "*/*", # curl does this
"User-Agent": "my-python-app/1", # otherwise it uses "Python-urllib/..."
},
data = '{"message":{"body":"TEXT"}}')
f = urllib2.urlopen(req)
मैं netcat तो मैं कर सकता के साथ इस परीक्षण किया देखें कि भेजा गया डेटा सॉर्ट ऑर्डर को छोड़कर, दोनों मामलों में समान था। यहाँ पहले एक कर्ल साथ किया गया था और urllib2 के साथ दूसरे
% nc -l 8000
POST /36576/speak.json HTTP/1.1
Authorization: Basic Nzg5ODY3ODpY
User-Agent: curl/7.19.4 (universal-apple-darwin10.0) libcurl/7.19.4 OpenSSL/0.9.8k zlib/1.2.3
Host: localhost:8000
Accept: */*
Content-Type: application/json
Content-Length: 27
{"message":{"body":"TEXT"}} ^C
% nc -l 8000
POST /36576/speak.json HTTP/1.1
Accept-Encoding: identity
Content-Length: 27
Connection: close
Accept: */*
User-Agent: my-python-app/1
Host: localhost:8000
Content-Type: application/json
Authorization: Nzg5ODY3ODpY
{"message":{"body":"TEXT"}}^C
(यह थोड़ा उत्पादन से बदलाव किया गया है। मेरे परीक्षण का मामला ही URL पथ आप का इस्तेमाल किया उपयोग नहीं किया।)
कोई है अंतर्निहित fansplib का उपयोग करने की आवश्यकता है, जो उन चीजों का समर्थन नहीं करता है जो urllib2 आपको प्रॉक्सी समर्थन की तरह देता है। दूसरी तरफ, मुझे urllib2 को इस सरल प्रकार के अनुरोध के बाहर जटिल होने के लिए मिलता है और यदि आप बेहतर समर्थन चाहते हैं जिसके लिए हेडर भेजे जाते हैं और वे ऑर्डर भेजे जाते हैं तो httplib का उपयोग करें।
स्रोत
2010-01-02 21:19:03
काम करता है के लिए यहां जाएं - http://stackoverflow.com/questions/4348061/how-to-use-python-urllib2-to-send-json- डेटा-फॉर-लॉगिन/7469725 # 7469725 – treecoder