【问题标题】:How to replace token(bearer) with username, password in Cherwell REST API request如何在 Cherwell REST API 请求中用用户名、密码替换令牌(承载)
【发布时间】:2017-09-10 19:13:55
【问题描述】:

我正在尝试使用 Python 中的 REST API 在 cherwell 中创建 RFC。我首先在 Swegger UI 中尝试过。我让它在那里工作。我能够成功创建 RFC。然后通过使用请求模块在python中遵循该Curl请求,我尝试并得到了401。我发现它为什么我得到401。这是因为在授权中我使用的是临时令牌Bearer。它只会活10分钟。如果我在 10 分钟后提出请求,我会收到 401。Bearer 是必填字段。没有它我不能提出请求。我试图传递用户名和密码而不是 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

如果有人可以帮助以前做过这件事的人,那就太好了!请指教

感谢任何帮助!

【问题讨论】:

  • 请求Session 模块将帮助您处理类似stackoverflow.com/questions/39210484/… 的标头,无需将json 保存到磁盘。典型的模式是:尝试请求,如果令牌陈旧,则捕获错误,请求获取新令牌,然后重试。或者你可以使用 Alf 之类的东西来为你处理它github.com/globocom/alf#workflow
  • 感谢您的评论。我找到了解决方法。我打了另一个电话并请求令牌。使用该令牌,我可以提出创建 RFC 的请求。

标签: python rest curl


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    找到了我用来解决类似问题的解决方案。这是一个从 /CherwellAPI/token 请求令牌并返回格式正确的 Bearer 令牌的函数。您需要在 API 请求中将此不记名令牌作为 API 标头中的授权参数传递。应该看起来像 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']
    
    

    【讨论】:

      猜你喜欢
      • 2019-05-24
      • 2020-09-11
      • 2023-02-21
      • 1970-01-01
      • 2018-06-09
      • 2019-03-11
      • 2015-01-14
      • 2017-01-09
      • 1970-01-01
      相关资源
      最近更新 更多