将cURL命令转换为Python Requests命令

时间:2016-06-28 14:52:50

标签: python django ssl curl python-requests

我是cURL和Requests的新手,我对如何将cURL请求转换为Python中的Requests命令表示怀疑。

查看Apache Stratos文档Doc Page以执行针对服务器的登录,在cURL中使用:

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

它适用于终端。现在,我想在我的Django网站上做同样的事情并将curl URL转换为python代码并使用模块“请求”我不知道如何传递用户并传递信息请求。

我现在拥有的代码:

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

那么,我正确发送用户名和密码?我如何解决证书错误?

谢谢和问候

3 个答案:

答案 0 :(得分:3)

您可turn off SSL cert verification使用verify标记,并通过指定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

答案 1 :(得分:2)

您使用的是本地主机,几乎可以肯定没有有效的证书。

出于测试目的,禁用ssl验证(它仍然是加密的,只是不验证证书)

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

答案 2 :(得分:0)

在@Sam解决方案之后查看Requests Auth Doc Page我找到了解决方案:

Python Resquest代码:

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

" params"它不需要它。

然后:

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

希望它有所帮助!