我正在尝试使用Python中的REST API在cherwell中创建RFC。我在Swegger UI中首先尝试过。我让它在那里工作。我能够成功创建RFC。然后通过跟随Curl请求,在python中,使用请求模块,我尝试并获得401.我发现它为什么我得到401.这是因为在授权我使用Bearer这是一个临时令牌。它只能活10分钟。如果我在10分钟后请求我获得401.持票人是必须的领域。没有它,我无法提出要求。我试图通过用户名和密码而不是Bearer,它没有用。以下是我的要求,
with open('C:\Cherwell\payload.json') as file:
Data = json.load(file)
payload = Data
header = {"Authorization":"Bearer XXXXXXXX"}
r = requests.post("https:/URL/CherwellAPI/api/V1/savebusinessobject?
api_key=XXXX-XXXX-XXXX-XXXX", auth=('user','pass'), headers = header,
data=json.dumps(payload))
print r
如果有人能帮助谁以前做过这件事,那将会很棒!请建议
感谢任何帮助!
答案 0 :(得分:1)
找到了我用来解决类似问题的解决方案。该函数从/ CherwellAPI / token请求令牌并返回格式正确的Bearer令牌。您需要在API请求中将此Bearer令牌作为API标头中的Authorization参数传递。应该看起来像token = bearer_token。
import json
import requests
configFile = 'config.json'
with open(configFile) as cf:
config_data = json.load(cf)
def getCherwellToken():
params = {'apikey' : config_data['cherwell']['client_id']}
data = {'grant_type' : 'password',
'client_id' : config_data['cherwell']['client_id'],
'username' : config_data['cherwell']['username'],
'password' : config_data['cherwell']['password']}
url = 'https://.cherwellondemand.com/CherwellAPI/token'
session = requests.post(url=url, data=data)
if session:
token = json.loads(session.text)
else:
token = None
return 'Bearer ' + token['access_token']
答案 1 :(得分:0)
使用另一个电话获取令牌您可以获取访问令牌并使用它来请求创建新票证。这对我有用。