如何通过python授权自己成为mulesoft / cloudhub帐户?

问题描述

我必须从python从mulesoft / cloudhub下载日志。我尝试从命令提示符中获取日志,但操作成功。我在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以获得令牌,将其提取并将授权标头添加到日志请求中。

,

最后,经过这么多的尝试,我得到了答案。我需要对我的用户名和密码进行编码,然后通过它,如下所示-

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)