我必须从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,所以详细的回答将不胜感激。谢谢。
发布于 2020-10-05 09:53:51
最后,经过这么多的磨练,我终于得到了答案。我需要对我的用户名和密码进行编码,然后传递,如下所示-
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)。
发布于 2020-10-01 13:24:59
Python脚本缺少获得API请求所需的访问令牌的第一个调用。第一个卷曲请求就是为了这个。您需要添加一个conn.request来获取令牌,提取它并将授权头添加到日志请求中。
https://stackoverflow.com/questions/64155493
复制相似问题