提问人:Eric S 提问时间:11/17/2023 更新时间:11/17/2023 访问量:19
REST API 调用在 powershell 中返回错误请求,但它在 API 帮助页面中有效
REST API call returning bad request in powershell but it works in the API help page
问:
我正在尝试通过powershell进行REST调用,但收到“错误400错误请求”。我正在使用 ConvertFrom-Json 导入一个 JSON 文件,然后通过 ConvertTo-Json 将其输入到调用正文中。奇怪的是,如果我只服用$json |ConvertTo-Json -Depth 3 并将输出复制到 API 页面,它没有问题,因此它看起来格式正确。任何可能导致这种情况的想法?
出于安全原因,我删除了用户名、密码和 API 密钥,但我知道这些是正确的。我已经能够让这个确切的代码块正常工作,除了我没有通过 ConvertTo-Json 输入正文,而是在那里手动输入参数。
$username = "UserName"
$password = ConvertTo-SecureString "Password" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($username, $password)
$headers = @{
"accept" = "application/json"
"X-API-Key" = "API-KEY"
}
$response = Invoke-RestMethod -Uri "URI"`
-Method Post `
-Credential $credential `
-Headers $headers `
-ContentType "application/json" `
-Body $json | ConvertTo-Json -Depth 3
}
答:
0赞
Eric S
11/17/2023
#1
没关系,我想通了。我需要将整个JSON转换为REST调用正文的字符串。下面的片段最终对我有用。
$body = $json | ConvertTo-Json -Depth 3
$username = "USERNAME"
$password = ConvertTo-SecureString "PASSWORD" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($username, $password)
$headers = @{
"accept" = "application/json"
"X-API-Key" = "API KEY"
}
$response = Invoke-RestMethod -Uri "URI"`
-Method Post `
-Credential $credential `
-Headers $headers `
-ContentType "application/json" `
-Body $body.ToString()
}
评论