简体   繁体   中英

Rest API authentication and access using Python Requests

I have been regularly accessing an API at work using curl. But now i need to do a bit of automation for the same. Was trying to translate what i do with curl into python using the requests module. But I keep receiving a 401 error.

My curl requests that i regularly are as below:

Step1: Session Authentication with cookies:

curl -b cookies -c cookies -v -X POST -H "Content-Type: application/json" --data-binary '{"auth":{"username":"aaa","password":"bbb"}}' http://api.xyz.at/auth

Step2: Access API URL for data retrieval

curl -b cookies -c cookies http://api.xyz.at/somepage?per_id=556677

Now using Python Requests, here is what I am doing

Step1: For Authentication

username = 'aaa'
password = 'bbb'
s = requests.Session()
s.post('http://api.xyz.at/auth',auth=('username','pasword'))

This "i think" works fine, and give me the below response

<Response [200]>

Step2: Access API URL for data retrieval

s.get('http://api.xyz.at/somepage?per_id=556677')

but this Step 2 keeps returning an error

<Response [401]>

The code is failing and not sure where.

My Python skills are visibly pedestrian. I have been looking at the Requests website. But unfortunately haven't been able to decipher. Guidance would be appreciated :)

import urllib2, urllib
url = 'http://api.xyz.at/auth'
pm = urllib2.HTTPPasswordMgrWithDefaultRealm()
pm.add_password(None, url, 'user', 'password')
auth = urllib2.HTTPBasicAuthHandler(pm)
opener = urllib2.build_opener(auth)
urllib2.install_opener(opener)
request = urllib2.Request('http://api.xyz.at/somepage?per_id=556677', None)
handler = urllib2.urlopen(request)
handler.read()

Since you are getting a 401 error I guess you are not passing the authentication token which you get as response from login API. Use the same auth token to perform other options - Get-post-Delete.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM