REST API 调用在 powershell 中返回错误请求,但它在 API 帮助页面中有效

REST API call returning bad request in powershell but it works in the API help page

提问人:Eric S 提问时间:11/17/2023 更新时间:11/17/2023 访问量:19

问:

我正在尝试通过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
   }
PowerShell Rest Epicor

评论


答:

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()
   }