![](/img/trans.png)
[英]How to authorize pocket API call from Python script when posting links to my own pocket account?
[英]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.