i\xc2\xb4am 尝试通过 Powershell 访问 RESTAPI。\n在登录过程中,会生成一个 Authtoken,任何后续命令都需要它,并且必须将其放入标头中。到目前为止没有什么特别的。
\n当然我想将生成的Authtoken放入一个变量中以便于处理。但 i\xc2\xb4am 无法这样做...\n这是 i\xc2\xb4am 尝试的操作:\n登录并获取 Authtoken
$payload = @{"login"="username";"password"="password"}\n$AuthToken = Invoke-RestMethod -Method Post -ContentType application/json -Body (ConvertTo-Json $payload) -Uri "https://path/to/api/login"\nRun Code Online (Sandbox Code Playgroud)\n\n因为 API 仅以特殊形式接受 authoken,所以我必须对其进行一些编辑
\n\n$AuthToken = $AuthToken.Replace("auth_token=",\'"auth_token"="\')\n$AuthToken = $AuthToken.Insert(73,\xe2\x80\x9a"\xe2\x80\x98)\nRun Code Online (Sandbox Code Playgroud)\n\n之前的Authtoken
\n\n@{auth_token=rShln/Yc2cepDtzbNFntdZue:9c3ce025e5485b14090ca25500f15fa2}\nRun Code Online (Sandbox Code Playgroud)\n\n在我的治疗之后
\n\n@{"auth_token"="St6tecwEseAQegkfhACXUwaj:d7e3e2095ba31073e3fbc043c4563d28"}\nRun Code Online (Sandbox Code Playgroud)\n\n如果我手动将 Authtoken 插入 Restmethod 中,调用将如下所示:
\n\nInvoke-RestMethod -Method Get -ContentType application/json -Headers @{"auth_token"="JsRaTBRlElpq1jLLX5z3TXUy:91d0e1eee1943f6cd6dbaa1d0b9ba9d0"} -Uri "https://path/to/api/something"\nRun Code Online (Sandbox Code Playgroud)\n\n正如您可能猜到的,这效果非常好!如果我现在尝试使用变量中的 Authtoken,我的休息调用将如下所示:
\n\nInvoke-RestMethod -Method Get -ContentType application/json -Headers $Authtoken -Uri "https://path/to/api/something"\nRun Code Online (Sandbox Code Playgroud)\n\nPowershell 给我以下错误
\n\nInvoke-RestMethod : Cannot bind parameter \'Headers\'. Cannot convert the "@{"auth_token"="St6tecwEseAQegkfhACXUwaj:d7e3e2095ba31073e3fbc043c4563d28"}" value of type "System.String" to type \n"System.Collections.IDictionary".\nAt C:\\Users\\User\\Desktop\\xxx.ps1:6 char:70\n+ ... -Method Get -ContentType application/json -Headers $AuthToken -Uri "h ...\n+ ~~~~~~~~~~\n + CategoryInfo : InvalidArgument: (:) [Invoke-RestMethod], ParameterBindingException\n + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.InvokeRestMethodCommand\nRun Code Online (Sandbox Code Playgroud)\n\n我不知道为什么 i\xc2\xb4am 收到此错误,并且非常感谢有人可以帮助我解决此问题!
\n所以现在它看起来像是$AuthToken一个字符串。该字符串的格式就像您期望的哈希表一样,但我不认为它实际上是哈希表。解决这个问题的方法是使用Invoke-Expression字符串,这会将其转换为实际的哈希表。就像是:
$AuthToken = Invoke-Expression $AuthToken
Invoke-RestMethod -Method Get -ContentType application/json -Headers $Authtoken -Uri "https://path/to/api/something"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23923 次 |
| 最近记录: |