2015-03-25 82 views
0

我一直在使用curl定期訪問API。但現在我需要爲此做一些自動化操作。 正試圖將我用curl做的事情轉化爲使用請求模塊的python。 但我一直收到401錯誤。Rest API驗證和訪問使用Python請求

我捲曲的請求,我經常是如下:

第一步:會話認證與餅乾:

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 

第二步:進行數據檢索訪問API URL

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

現在使用Python請求,這裏是我在做什麼

Step1:對於Authen tication

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

這個 「我認爲」 正常工作,給我下面的響應

<Response [200]> 

第二步:訪問API URL進行數據檢索

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

但這步驟2保持回國錯誤

<Response [401]> 

代碼失敗,不知道在哪裏。

我的Python技能顯然是行人。我一直在尋找請求網站。但不幸的是,無法破譯。 指導,將不勝感激:)

回答

1
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() 
0

既然你得到一個401錯誤我想你不及格,你獲得從登錄API響應的認證令牌。使用相同的認證令牌來執行其他選項 - Get-post-Delete。