簡體   English   中英

如何從 python 授權自己使用 mulesoft/cloudhub 帳戶?

[英]How to Authorize myself to mulesoft/cloudhub account from python?

我必須從 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM