服务器返回状态码400时,使用Powershell检索响应内容

偷窃

因此,我正在通过powershell调用rest Web服务,如果您尝试发布已处理的数据,它会以400状态代码响应,并且状态代码还会返回JSON响应,如下所示:

{
    "statusCode": 400,
    "errorCode": "REQUEST_VALIDATION_ERROR",
    "message": "validation failed",
    "developerMessage": " MessageId-xxx already processed. No Need to process again."
}

因此,我尝试使用一些Powershell调用此方法,并接收400状态代码,并使用try / catch处理此异常以获取异常,但是响应中没有内容,我可以获取响应标头,状态代码,状态消息等,但是我根本找不到访问JSON响应的方法,这是我正在使用的Powershell代码的格式:

$url = "https://example.com/webservice/status"
$cert = Get-ChildItem Cert:\CurrentUser\My\certthumbprintxxxxx
$headers = @{"tokenId" = "tokenxxxxx"}

$body = 
@"
{
...
 JSON data...
...
}
"@

try 
{
    $response = Invoke-WebRequest $url -Certificate $cert -Headers $headers -Method Post -Body $body
    }
catch
{
    $_.Exception.response
    }

当我发送$_.Exception.response给Get-Member时,我可以看到没有content属性。如何使用Powershell在响应中访问消息?

法比安

您可以通过从ErrorDetails属性访问内容消息$_.ErrorDetails.Message它返回一个字符串。

作为替代,你也可以直接读取使用WebResponse类类流$_.Exception.Response.GetResponseStream()(如描述在这里,我不得不把流位置0再次,因为它似乎已经由PowerShell中读取)

   $s = $_.Exception.Response.GetResponseStream()
   $s.Position = 0;
   $sr = New-Object System.IO.StreamReader($s)
   $err = $sr.ReadToEnd()
   $sr.Close()
   $s.Close()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当预期 405 时,服务器响应状态码 200

使用Cypress存根服务器时如何设置响应的状态码

服务器随机返回状态码为200的空响应

错误:创建:创建失败:服务器响应状态码 413 但没有返回更多信息

无服务器响应模板,带状态码

条纹订阅 - 服务器响应状态 400

Google adsense响应服务器的状态为400()

服务器返回的HTTP响应代码:400

服务器返回 HTTP 响应代码:openConnection() 后 400

服务器415响应码

使用PostAsync发送数据时,服务器返回400错误

如何在Nginx中更改代理服务器响应的状态码?

使用shopify API时,服务器返回HTTP响应代码:URL的401

从memcached服务器检索Java对象值时,memcached服务器返回空值

Genymotion错误:无法创建虚拟设备服务器返回的HTTP状态码0

Azure 文件存储服务器以 400 状态响应(不支持条件标头。)

无法加载资源:服务器在Angular + NodeJS上以400(错误请求)的状态响应

spring post无法加载资源:服务器响应状态为400(错误请求)

PHP 表单:服务器响应状态为 400(错误请求)

如何修复“无法加载资源:服务器以400()状态响应” API提取错误

如果节点服务器发送状态 400,则获取 axios 响应

加载资源失败:服务器响应状态为 400 - React/Redux

Flask & AJAX:加载资源失败:服务器响应状态为 400(BAD REQUEST)

angularjs:加载资源失败:服务器响应状态为 400(错误请求)

反应 - 加载资源失败:服务器响应状态为 400(错误请求)

WinHTTP 导致 Apache Web 服务器 (localhost) 在 Windows Vista 上以 http 状态 400 进行响应

API 中调用函数检索 Failed to load resource: 服务器响应状态为 500()

无法加载资源:服务器从控制器返回base64格式的映像时,服务器响应状态为500(内部服务器错误)

axios 在进行基本认证时返回 400 的响应码