दिलचस्प पोस्ट
कार्रवाई और कार्रवाई के बीच मतभेद अजगर 3 प्रिंट कैसे करें () utf8 गतिशील निर्मित लेआउट का आईडी कैसे सेट करें? टीम बिल्ड: स्थानीय स्तर पर MSDeploy का उपयोग करके प्रकाशित करें किसी बिंदु पर ज़ूम इन करें (स्केल और अनुवाद का उपयोग करके) जावा स्थिर ब्लॉक के बराबर C ++ मुहावरे क्या है? अनछुए परिवर्तन का पता लगा रहा है प्रत्येक अच्छे डाटाबेस / एसक्यूएल डेवलपर को उत्तर देने में सक्षम होना चाहिए कंसोल में मैं तेज़ रंग का आउटपुट कैसे लिख सकता हूं? टाइपस्क्रिप्ट में "=>" का क्या अर्थ है? (फैट एरो) क्या "त्रुटि: असंगत प्रकार: शून्य को परिवर्तित नहीं किया जा सकता है …" इसका अर्थ है? डेटा टाइमटाइम्स के भीतर डेटा सबसेट समय फ़्रेम लौटें? जर्सी क्लाइंट का उपयोग करते हुए एक बड़ी फ़ाइल अपलोड करते समय OutOfMemoryError से बचें मुफ्त टीडीएस इसकी कॉन्फ़िग का उपयोग नहीं कर रहा है जेल के अंदर पैक किया जाता है जो रन exe

पायथन urllib2 बेसिक एथ समस्या

अपडेट: ली की टिप्पणी के आधार पर मैंने अपने कोड को वास्तव में सरल लिपि में संक्षिप्त करने और उसे कमांड लाइन से चलाने का निर्णय लिया:

import urllib2 import sys username = sys.argv[1] password = sys.argv[2] url = sys.argv[3] print("calling %s with %s:%s\n" % (url, username, password)) passman = urllib2.HTTPPasswordMgrWithDefaultRealm() passman.add_password(None, url, username, password) urllib2.install_opener(urllib2.build_opener(urllib2.HTTPBasicAuthHandler(passman))) req = urllib2.Request(url) f = urllib2.urlopen(req) data = f.read() print(data) 

दुर्भाग्यवश यह अभी भी Authorization शीर्षलेख (प्रति वायरशर्क) उत्पन्न नहीं करेगा 🙁

मुझे urllib2 पर बुनियादी AUTH भेजने में समस्या हो रही है मैंने इस लेख पर एक नज़र लिया और उदाहरण का पालन किया। मेरा कोड:

 passman = urllib2.HTTPPasswordMgrWithDefaultRealm() passman.add_password(None, "api.foursquare.com", username, password) urllib2.install_opener(urllib2.build_opener(urllib2.HTTPBasicAuthHandler(passman))) req = urllib2.Request("http://api.foursquare.com/v1/user") f = urllib2.urlopen(req) data = f.read() 

मैं वायर्ड हार्क के माध्यम से वायर पर निम्नलिखित देख रहा हूं:

 GET /v1/user HTTP/1.1 Host: api.foursquare.com Connection: close Accept-Encoding: gzip User-Agent: Python-urllib/2.5 

आप देख सकते हैं कि प्राधिकरण भेजा नहीं है, बनाम जब मैं कर्ल के माध्यम से अनुरोध भेजता हूं: curl -u user:password http://api.foursquare.com/v1/user

 GET /v1/user HTTP/1.1 Authorization: Basic =SNIP= User-Agent: curl/7.19.4 (universal-apple-darwin10.0) libcurl/7.19.4 OpenSSL/0.9.8k zlib/1.2.3 Host: api.foursquare.com Accept: */* 

किसी कारण के लिए मेरा कोड प्रमाणीकरण नहीं भेजता है – कोई भी मुझे देखता है कि मुझे क्या याद आ रहा है?

धन्यवाद

-simon

Solutions Collecting From Web of "पायथन urllib2 बेसिक एथ समस्या"

समस्या यह हो सकती है कि प्रति HTTP- मानक, पहले पायथन पुस्तकालयों, एक अप्रमाणित अनुरोध भेजते हैं, और उसके बाद केवल 401 पुनः प्रयास के साथ उत्तर दिए जाने पर, सही क्रेडेंशियल्स भेजे गए हैं अगर चौकोर सर्वर "पूरी तरह से मानक प्रमाणीकरण" नहीं करते हैं, तो पुस्तकालय काम नहीं करेगा।

प्रमाणीकरण करने के लिए हेडर उपयोग करने का प्रयास करें:

 import urllib2, base64 request = urllib2.Request("http://api.foursquare.com/v1/user") base64string = base64.b64encode('%s:%s' % (username, password)) request.add_header("Authorization", "Basic %s" % base64string) result = urllib2.urlopen(request) 

आपके जैसे ही समस्या थी और इस धागे से समाधान मिला: http://forums.shopify.com/categories/9/posts/27662

दूसरा पैरामीटर एक यूआरआई होना चाहिए, एक डोमेन नाम नहीं होना चाहिए। अर्थात

 passman = urllib2.HTTPPasswordMgrWithDefaultRealm() passman.add_password(None, "http://api.foursquare.com/", username, password) 

(कॉपी-पेस्ट / https://stackoverflow.com/a/24048772/1733117 से अनुकूलित)।

पहले आप urllib2.BaseHandler या urllib2.HTTPBasicAuthHandler subclass कर सकते हैं, और http_request कार्यान्वित http_request ताकि प्रत्येक अनुरोध में उचित Authorization शीर्षलेख हो।

 import urllib2 import base64 class PreemptiveBasicAuthHandler(urllib2.HTTPBasicAuthHandler): '''Preemptive basic auth. Instead of waiting for a 403 to then retry with the credentials, send the credentials if the url is handled by the password manager. Note: please use realm=None when calling add_password.''' def http_request(self, req): url = req.get_full_url() realm = None # this is very similar to the code from retry_http_basic_auth() # but returns a request object. user, pw = self.passwd.find_user_password(realm, url) if pw: raw = "%s:%s" % (user, pw) auth = 'Basic %s' % base64.b64encode(raw).strip() req.add_unredirected_header(self.auth_header, auth) return req https_request = http_request 

फिर यदि आप मेरे जैसे आलसी हैं, तो दुनिया भर में हैंडलर स्थापित करें

 api_url = "http://api.foursquare.com/" api_username = "johndoe" api_password = "some-cryptic-value" auth_handler = PreemptiveBasicAuthHandler() auth_handler.add_password( realm=None, # default realm. uri=api_url, user=api_username, passwd=api_password) opener = urllib2.build_opener(auth_handler) urllib2.install_opener(opener) 

मेलचिप के एपीआई तक पहुंचने की कोशिश करते हुए मुझे इसी तरह की समस्या से निपटने के लिए उपयोग किया जा रहा है। यह वही काम करता है, सिर्फ अच्छे स्वरूपित है

 import urllib2 import base64 chimpConfig = { "headers" : { "Content-Type": "application/json", "Authorization": "Basic " + base64.encodestring("hayden:MYSECRETAPIKEY").replace('\n', '') }, "url": 'https://us12.api.mailchimp.com/3.0/'} #perform authentication datas = None request = urllib2.Request(chimpConfig["url"], datas, chimpConfig["headers"]) result = urllib2.urlopen(request) 

मेरा सुझाव है कि वर्तमान समाधान मेरे पैकेज urllib2_prior_auth का उपयोग करना है जो यह बहुत अच्छी तरह से हल करता है (मैं मानक लिब में शामिल करने पर काम करता हूं।