我想为REST API执行一个python脚本,首先进行身份验证,然后执行get或put,通常使用curl执行以下操作:
curl -i -X POST -d username=admin -d password='pass' -c ./cookies.txt http://ip_address:9080/nbapiemswsweb/login
curl -v -i -H “Content-Type:application/json” -X GET -b ./cookies.txt 'http://ip_address:9080/nbapiemswsweb/rest/v1/Search/Element'
我正在尝试通过身份验证,但我收到401,然后不知道怎么做GET:
import requests
from requests.auth import HTTPDigestAuth
import json
url = "http://IP_ADDRESS:9080/nbapiemswsweb/login"
myResponse = requests.post(url,auth=HTTPDigestAuth(raw_input("username: "), raw_input("Password: ")), verify=True)
print (myResponse.status_code)
结果
python restapi.py
username: admin
Password: pass
401
我需要得到200并能够获得第二次卷曲
答案 0 :(得分:0)
您的curl命令只是将用户名和密码作为表单数据发布,而不是作为授权标题发布。
对requests
执行相同操作,并使用session object处理Cookie的捕获和发送:
with requests.Session() as session:
formdata = {
'username': raw_input("username: "),
'password': raw_input("Password: "),
}
myResponse = session.post(url, data=formdata, verify=True)
second_response = session.get('http://IP_ADDRESS:9080/nbapiemswsweb/rest/v1/Search/Element')