2013-02-10 7 views
8

मैं पाइथन और अनुरोध लाइब्रेरी का उपयोग करके अपने बुकमार्क में यूआरएल जोड़ने के लिए Instapaper's simple developer api का उपयोग करने का प्रयास कर रहा हूं। उपयोगकर्ता नाम और पासवर्ड प्रमाणीकृत करने के लिए सभी अच्छी तरह से काम करता है।पायथन अनुरोध करता है लाइब्रेरी HTTPBasicAuth तीन पैरामीटर

import requests 
from requests.auth import HTTPBasicAuth 
requests.get('https://www.instapaper.com/api/authenticate', auth=HTTPBasicAuth('username', 'password')) 

लेकिन जब बुकमार्क जोड़ने के लिए एपीआई का उपयोग करने की कोशिश कर रहा:

requests.get('https://www.instapaper.com/api/add', auth=HTTPBasicAuth('username', 'password','websiteUrl')) 

मैं त्रुटि:

File "instantbookmark.py", line 3, in <module> 
    getA = requests.get('https://www.instapaper.com/api/add',  auth=HTTPBasicAuth('username', 'password','websiteUrl')) 
TypeError: __init__() takes exactly 3 arguments (4 given) 

मुझे लगता है कि इस वजह से HTTPBasicAuth एक तीसरा तर्क नहीं ले सकते क्या किसी को ऐसा करने का कोई तरीका पता है?

+0

यह पूर्ण ट्रेसबैक त्रुटि – Wilberto

+0

हाँ है, मैंने अनुरोधों के स्रोत और एपीआई के दस्तावेज की जांच की है, नीचे मेरा जवाब देखें। –

उत्तर

7

HTTPBasicAuth() केवल कभी उपयोगकर्ता नाम और पासवर्ड तर्क लेता है। कोई तीसरा तर्क नहीं है, पूर्ण-स्टॉप।

HTTP मूल प्रमाणीकरण अनुरोध के लिए एक अतिरिक्त शीर्षलेख जोड़ता है; यह जानकारी जीईटी या पोस्ट पैरामीटर से अलग रखा जाता है। जब आप प्रमाणीकरण के इस रूप का उपयोग करते हैं, तो आपको एपीआई विधियों के लिए username और password पैरामीटर पास करने की आवश्यकता नहीं है।

बुकमार्क जोड़ने, एक पोस्ट के रूप url पैरामीटर में पास या डेटा पैरामीटर प्राप्त करने के लिए:

requests.post('https://www.instapaper.com/api/add', data={'url': 'websiteUrl'}, auth=HTTPBasicAuth('username', 'password')) 

या तो requests.get() या requests.post() करेंगे।

संबंधित मुद्दे