尝试通过Powershell客户端连接到REST-API。在邮递员中测试端点时,我完全没有问题。这是函数的主要部分(我有一个用于获取用户名和密码的[pscredential]$Creds
参数(:
[string]$username = $Creds.UserName
[string]$password = (New-Object System.Net.NetworkCredential($Creds.UserName, $Creds.Password, 'Null')).Password
[string]$authorizationInfo= ([Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(('{0}:{1}' -f $username, $password))))
Invoke-WebRequest -Uri "https://$($HostName)/api/" -Method Get -Headers @{Authorization = ('Basic {0}' -f $authorizationInfo)}
出于某种原因,我的脚本中的Authorization
标头与 Postman 中的不同。我甚至可以将Authorization
标头从 Postman 中复制出来并将其粘贴到-Headers
参数中,一切正常。我只是看不出我哪里弄错了。
我不能告诉你为什么这不起作用,但我可以建议一些对我有用的 API 一直有用的东西:
$auth = $username + ':' + $upassword
$Encoded = [System.Text.Encoding]::UTF8.GetBytes($auth)
$authorizationInfo = [System.Convert]::ToBase64String($Encoded)
$headers = @{"Authorization"="Basic $($authorizationInfo)"}
Invoke-WebRequest -Uri "https://$($HostName)/api/" -Method GET -Headers $headers
如果这不起作用,请尝试使用Invoke-Restmethod进行这种细微的区别:
Invoke-RestMethod -Uri "https://$($HostName)/api/" -Method GET -Headers $headers
使用 API 始终是一种冒险。 继续努力。 :)