【问题标题】:Powershell - Invoke-RestMethod with multiple headersPowershell - 具有多个标头的 Invoke-RestMethod
【发布时间】:2021-03-27 08:47:07
【问题描述】:

我正在尝试在 Powershell 中使用 Invoke-Restmethod 来调用 API(我对此很陌生)。我可以将其发送到 POST 并返回 jwt 访问令牌。我也可以使用该令牌通过 GET 返回一个 id,但是我在下一步返回下一组数据时遇到了麻烦。我可以让它通过 curl 手动工作。我认为这个问题可能是因为返回租户列表需要多个标题,而我不确定格式才能使其正常工作。

curl 脚本如下所示,并按预期工作:

curl -XGET -H "Authorization: Bearer <jwt access token>" -H "ID: <id>" https://theapiurl.com/.......

我已经尝试了多种方法在 powershell 中执行此操作,最近如下所示,但我没有尝试任何方法。我已经尝试返回单独的 $headers 内容并构建一个字符串(即 $headers2 = $.headers.Item(Authorization) + ......),但这也不起作用。老实说,我尝试了很多不同的东西,我忘记了我有什么没有尝试过

$headers = @{
    'ID' = $id
    'Authorization' = $auth_string
    }
    
$response = Invoke-RestMethod -Method Get -Headers $headers -Uri $url

请告诉我添加多个标题的正确方法(我认为这是问题所在,我做错了什么)?

【问题讨论】:

  • 哈希表 (@{ ... }) 应该没问题。您确定您的 $id 和 $auth_string 值正确吗?您收到什么错误消息/响应代码?
  • 不确定我是否完全理解您要执行的操作,但如果您需要在声明后向哈希表添加其他属性,请使用 add 方法:$headers.add('name','value')
  • 在这个答案中,我建议使用会话变量,您可以在其中添加多个标题。 QA

标签: powershell curl invoke-restmethod


【解决方案1】:

如果它对其他人有用,设置此命令行开关参数的另一种语法如下(上传到 GitHub 发布存储库的实际工作示例)。在参数对象中设置所有开关(不添加连字符)很有用,如下所示:

  $upload_params = @{
    Uri = $upload_uri + "?name=$asset_name"
    Method = 'POST'
    Headers = @{
      'Authorization' = "token $github_token"
      'Accept' = 'application/vnd.github.everest-preview+json'
    }
    InFile = $asset
    ContentType = 'application/octet-stream'
  }
"Uploading $asset..."
$upload = Invoke-RestMethod @upload_params
"The server returned:"
echo $upload

变量$upload 包含从服务器返回的完整对象(从 json 转换为 PowerShell 对象)。因此,例如,您还可以像这样获取此对象的属性:

"Upload successfully posted as " + $upload.url 

【讨论】:

    【解决方案2】:

    感谢所有回复 - 他们都不是真正的答案,但他们确实给了我信心,我正在以正确的方式做这件事。

    我一直在使用 PS Write-Host 检查返回的数据 - 这适用于令牌和 ID,但不适用于下一步。我没有收到错误,只是没有数据。 (在命令提示符窗口中手动测试时,我确实看到了返回的数据)。 当我向 PS 添加 -OutFile 并检查文件后,我意识到它一直在工作,而 PS 只是没有向我显示结果。浪费了 2 个小时,虽然结果我学到了更多!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多