将python请求转换为powershell invokerestmethod

2024-09-30 18:19:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Python编写了这段脚本,我想将其转换为PowerShell:

method = "GET"
URL = "PeRT RESTful API URL"
contentType = ""
publicAccessKey = "Your Public Access Key"
date = datetime.now().strftime("%a, %d %b %Y %X +0000")
cotentMd5 = ""
secretAccessKey = "Your Secret Access Key"

# URL used to create signature should not include parameters!!!
stringToSign = method + "\n" + url + "\n" + contentType + "\n" + publicAccessKey + "\n" + date + "\n" + cotentMd5
#print(stringToSign)
message = bytes(stringToSign).encode('utf-8')
secret = bytes(secretAccessKey).encode('utf-8')
signature = base64.b64encode(hmac.new(secret, message, digestmod=hashlib.sha256).digest())

headers = {
    "Authorization": publicAccessKey + ":" + signature,
    "Date" : date
}

response = requests.get(url, headers=headers)

这是我写的:

$URL = "PeRT RESTful API URL"
$hmacsha = New-Object System.Security.Cryptography.HMACSHA256
publicAccessKey = "Your Public Access Key"
secretAccessKey = "Your Secret Access Key"
$date= Get-Date -Format "ddd, dd MMM yyyy HH:mm:ss +0000"
$stringToSign= "GET" + "`n" + $baseURL + "`n" + "" + "`n" + $publicAccessKey + "`n" + $date + "`n" + ""

$hmacsha.key= [System.Text.Encoding]::ASCII.GetBytes($secretAccessKey)
$signature = $hmacsha.ComputeHash([Text.Encoding]::ASCII.GetBytes($stringToSign))
$signature = [Convert]::ToBase64String($signature)

$headers = @{ "Authorization" = $publicAccessKey + ":" + $signature ; "Date" = $date }

$response = Invoke-RestMethod -Uri $URL -Headers $headers

正在获取“HTTP状态401-客户端ID或密码无效。”

有人能发现这个问题吗


Tags: keyurlyourgetdateaccessmethodheaders