我是python的新手,无法弄清楚如何执行以下操作。 我想在命令中放一个变量,但它不起作用。该命令采用变量名而不是其值。
下面的脚本使用用户名和密码调用https来获取令牌。我退回了令牌。然后我需要使用令牌来创建用户。 我遇到了问题,iplanet对中的“token”没有正确扩展。它设置正确,因为我可以在命令之前将其打印出来。因此令牌将包含类似“AQIC5wM2LY4Sfcydd5smOKSGJT”的内容,但是当进行第二次http调用时,它会传递单词令牌而不是令牌值。
import requests
import json
url = "https://www.redacted.com:443/json/authenticate"
headers = {
'X-Username': "user",
'X-Password': "password",
'Cache-Control': "no-cache",
}
response = requests.request("POST", url, headers=headers)
tokencreate = json.loads(response.text)
token=tokencreate['tokenId']
print token
url = "https://www.redacted.com:443/json/users"
querystring = {"_action":"create"}
payload = "{\r\n\"username\":\"Patrick\",\r\n\"userpassword\":\"{{userpassword}}\",\r\n\"mail\":\"patrick@example.com\"\r\n}"
headers = {
'iPlanetDirectoryPro': "token",
'Content-Type': "application/json",
'Cache-Control': "no-cache",
}
response = requests.request("POST", url, data=payload, headers=headers, params=querystring)
print(response.text)
答案 0 :(得分:2)
这是因为您传递了 字符串 '令牌'当您的意思是传递 变量 标记
时在这里创建令牌:
tokencreate = json.loads(response.text)
token=tokencreate['tokenId']
print token
但是你没有使用实际的变量,它应该是这样的:
payload = "{\r\n\"username\":\"Patrick\",\r\n\"userpassword\":\"{{userpassword}}\",\r\n\"mail\":\"patrick@example.com\"\r\n}"
headers = {
'iPlanetDirectoryPro': token,
'Content-Type': "application/json",
'Cache-Control': "no-cache",
}