gpt4 book ai didi

rest - 如何获取从 Invoke-RestMethod 返回 400 Bad Request 的 Web 请求正文

转载 作者:行者123 更新时间:2023-12-02 07:24:31 36 4
gpt4 key购买 nike

当我运行以下语句时

Invoke-RestMethod "https://api.mysite.com/the/endpoint" `
-Body (ConvertTo-Json $data) `
-ContentType "application/json" `
-Headers $DefaultHttpHeaders `
-Method Post

端点返回400 Bad Request,这会导致PowerShell显示以下不太有用的消息:

Invoke-WebRequest : The remote server returned an error: (400) Bad Request.At line:1 char:1+ Invoke-WebRequest "https://api.mysite.com/the/endpoint" -Body  ...+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

如何获取响应正文,这可能会告诉我发送的请求出了什么问题?

最佳答案

PowerShell Invoke-WebRequestInvoke-RestMethod 存在一个已知问题,当状态代码为错误(4xx 或 5xx)时,shell 会吃掉响应正文。听起来您正在寻找的 JSON 内容就是以这种方式消失的。您可以使用 $_.Exception.Response.GetResponseStream()

在 catch block 中获取响应正文
    try {
Invoke-RestMethod "https://api.mysite.com/the/endpoint" `
-Body (ConvertTo-Json $data) `
-ContentType "application/json" `
-Headers $DefaultHttpHeaders `
-Method Post
}
catch {
$streamReader = [System.IO.StreamReader]::new($_.Exception.Response.GetResponseStream())
$ErrResp = $streamReader.ReadToEnd() | ConvertFrom-Json
$streamReader.Close()
}

$ErrResp

关于rest - 如何获取从 Invoke-RestMethod 返回 400 Bad Request 的 Web 请求正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35986647/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com