2016-06-28 156 views
0

我是cURL和Requests的新手,我對如何將cURL請求轉換爲Python中的Requests命令表示懷疑。將cURL命令轉換爲Python請求命令

看着阿帕奇Stratos的文檔Doc Page來對服務器進行登錄,在捲曲你使用:

curl -X GET -H "Content-Type: application/json" -k -v -u admin:admin https://localhost:9443/api/session 

而且它工作在終端上。現在,我想在我的Django網站上做同樣的事情,並將curl URL轉換爲python代碼,並使用模塊「requests」,我不知道如何傳遞用戶信息並傳遞信息。

,我現在所擁有的代碼是:

headers = {'Content-Type':'application/json'} 
data = {} 
req = requests.post('https://localhost:9443/api/session', headers=headers, params=data) 

但我不知道如何通過用戶名和密碼,所以我想這(Requests Python Login Tutorial

data = {"username":"admin","password":"admin"} 

但我得到一個證書從服務器錯誤:

File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 385, in send raise SSLError(e) 
requests.exceptions.SSLError: [Errno 1] _ssl.c:510: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed 

所以,我發送正確的用戶名和密碼?我如何解決證書錯誤?

感謝和問候

+0

你在本地主機上。使用SSL絕對重要嗎?試試'http:// localhost:9443/api/session'。 Python請求實際上處理SSL非常流暢,但本地主機上的有效SSL證書似乎不太可能。 –

+0

是的,文檔頁面上的所有URL都使用Https,當您訪問Firefox上的登錄頁面時,您需要添加安全異常以查看頁面。 – Aker666

+0

看起來你有兩個答案可供選擇:) –

回答

2

可以turn off SSL cert verificationverify標誌,並通過指定auth使用basic authentication

from requests.auth import HTTPBasicAuth 

req = requests.post('https://localhost:9443/api/session', headers=headers, auth=HttpBasicAuth('admin', 'admin'), verify=False) 

查看requests docs瞭解更多信息。

+0

是的,我在@Sam回答後發現它。但是,無論如何感謝:) – Aker666

2

您在使用本地主機幾乎肯定沒有一個有效的證書。

出於測試目的禁用SSL驗證(它仍然是加密只是沒有驗證證書)

req = requests.post('https://localhost:9443/api/session', headers=headers, params=data, verify=False) 
+0

'verify = False'很好。 –

+0

謝謝,我不知道這個標誌! – Aker666

0

的@Sam解決方案後,並找上了我Requests Auth Doc Page找到了解決方案:

Python的Resquest代碼是:

requests.get('https://localhost:9443/api/session', headers=headers, auth=HTTPBasicAuth('admin', 'admin'), verify=False) 

的 「PARAMS」 IT領域是沒有必要的。

然後:

u'{"Success":{ "sessionId": "547D78FD4966DDBE21AEFDAECE909DEC"}}' 

希望它可以幫助別人!