REST-API基本身份验证和通过Powershell调用WebRequest
正在尝试通过Powershell客户端连接到REST-API。在Postman中测试端点时,我一点问题都没有。下面是函数的主要部分(我有一个REST-API基本身份验证和通过Powershell调用WebRequest,powershell,.net-core,base64,powershell-core,Powershell,.net Core,Base64,Powershell Core,正在尝试通过Powershell客户端连接到REST-API。在Postman中测试端点时,我一点问题都没有。下面是函数的主要部分(我有一个[pscredential]$Creds参数,用于获取用户名和密码): 由于某种原因,授权标题在我的脚本中与在Postman中不同。我甚至可以从Postman中复制授权标题,并将其粘贴到-Headers参数中,一切正常。我只是不明白我在哪里弄错了。我不能告诉你为什么这不起作用,但我可以建议一些始终适用于我的API的东西: $auth = $username
[pscredential]$Creds
参数,用于获取用户名和密码):
由于某种原因,授权
标题在我的脚本中与在Postman中不同。我甚至可以从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总是一种冒险。继续努力。:) 我无法告诉您为什么这不起作用,但我可以建议一些始终适用于我的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总是一种冒险。继续努力。:) 谢谢你的反馈。我在您的代码段中遇到了同样的问题,
$authorizationInfo
变量的Base64String
与Postman不同(您的值与我的代码的值相同),因此它不起作用。由于此值“错误”,我得到一个“提供的凭据无效。”
消息看起来您是对的,这将是一次冒险。它工作正常,我刚刚了解到凭证用户名区分大小写!!每个API似乎都有自己的怪癖,我希望我能给你发一个“很多东西可以尝试”的文档。偶尔我会很幸运,一些新的API可以正常工作,但通常会有一段时间的碰壁会议。:)谢谢你的反馈。我在您的代码段中遇到了同样的问题,$authorizationInfo
变量的Base64String
与Postman不同(您的值与我的代码的值相同),因此它不起作用。由于此值“错误”,我得到一个“提供的凭据无效。”
消息看起来您是对的,这将是一次冒险。它工作正常,我刚刚了解到凭证用户名区分大小写!!每个API似乎都有自己的怪癖,我希望我能给你发一个“很多东西可以尝试”的文档。偶尔我会很幸运,一些新的API可以正常工作,但通常会有一段时间的碰壁会议。:)