问题描述
我必须从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)。