检查空的 WebResponseObject



我将Invoke-WebRequest命令的响应存储在一个变量中:

$response = Invoke-WebRequest -Uri $URL -Body $body -Headers $headers -Method POST

如果我正在执行的处理完成,我正在点击的 API 将返回 null,我需要检查它:

PS C:Usersme> Write-Host $response
null

我已经尝试了以下所有测试:

If (!$response) {
    Write-Host 'Null 1.'
}
If ($response -eq 'null') {
    Write-Host 'Null 2.'
}
If ($response -eq $null) {
    Write-Host 'Null 3.'
}
If ($response -eq [string]::Empty) {
    Write-Host 'Null 4.'
}
If ($null -eq $response) {
    Write-Host 'Null 5.'
}

这些都不起作用。我知道空字符串是一个很长的镜头,但我认为其他字符串之一应该有效。我在这里做错了什么?

$response对象是一个WebResponseObject(或从它派生的类(,它包含的不仅仅是响应的内容。这就是平等检查失败的原因。

PS C:Usersme> Write-Host $response

打印null,因为Write-Host在后台$response对象上调用ToString(),这将返回Content属性。对应的 ToString(( 实现在这里。

因此,如果响应中没有隐藏字符,则以下内容应该有效:

If ($response.Content -eq "null")
{
  Write-Host "Server returned null"
}

相关内容

  • 没有找到相关文章

最新更新