如何在Cherwell REST API请求中使用用户名,密码替换令牌(承载)

问题描述 投票:0回答:2

我正在尝试使用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

如果有人能帮助谁以前做过这件事,那将会很棒!请指教

感谢任何帮助!

python rest curl
2个回答
1
投票

找到了我用来解决类似问题的解决方案。它是一个从/ CherwellAPI / token请求令牌并返回格式正确的Bearer令牌的函数。您需要在API请求中将此承载标记作为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']


0
投票

使用另一个调用获取令牌您可以获取访问令牌并使用它来请求创建新票证。这对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.