如何授权自己使用 python 的 mulesoft/cloudhub 帐户?

How to Authorize myself to mulesoft/cloudhub account from python?

我必须从 mulesoft/cloudhub 从 python 下载日志。我试过从命令提示符中获取日志并且成功了。我在 CMD 中尝试的是 -

   1. curl -d "username=<my_username>&password=<my_password>" https://anypoint.mulesoft.com/accounts/login
   2. curl -H "Authorization: Bearer <access token>" -H "X-ANYPNT-ENV-ID: <environment ID>" "https://anypoint.mulesoft.com/cloudhub/api/v2/applications/<domain>/instances/<instance ID>/log-file" 

我在 python-

中尝试了以下代码
import http.client

headers = {'X-ANYPNT-ENV-ID': '{env id}'}

conn = http.client.HTTPSConnection('anypoint.mulesoft.com')
conn.request('GET','/cloudhub/api/v2/applications/{domain}/instances/{instanceId}/logs', urlencode(headers))
res = conn.getresponse()

data = res.read()
print(res.status, res.reason)
print(data.decode('utf-8'))
print(res.getheaders())

但是我得到了以下错误-

{"error":"Unauthorized","message":"Failed to create session. You must provide a valid Authorization header"}

我是 mulesoft 的新手,所以如果您能提供详细的回答,我将不胜感激。 谢谢。

Python 脚本缺少第一次调用以获取 API 请求所需的访问令牌。第一个 curl 请求就是为此目的。需要加一个conn.request获取token,提取后在日志请求中添加授权header

经过这么多的尝试,我终于得到了答案。我需要对我的用户名和密码进行编码,然后将其传递,如下所示-

a = bytes('<my_usermame>:<my_password>', 'ascii')
userAndPass = b64encode(a).decode("ascii")

headers = {'Authorization' : 'Basic %s' %userAndPass , 'X-ANYPNT-ENV-ID': '<my_env_id> }

conn = http.client.HTTPSConnection('anypoint.mulesoft.com')
conn.request('GET','/cloudhub/api/v2/applications/{domain}/instances/{instanceId}/logs', headers=headers)
res = conn.getresponse()
data = res.read()
print(res.status, res.reason)
print(data.decode('utf-8'))

还在发出请求时添加了 headers=headers 而不是 urlencode(headers)