检查null WebResponseObject

时间:2018-01-25 19:36:30

标签: powershell null webrequest httpwebresponse

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

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

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

PS C:\Users\me> 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.'
}

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

1 个答案:

答案 0 :(得分:1)

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

PS C:\Users\me> Write-Host $response

打印null因为Write-Host在幕后的ToString()对象上调用$response,后者返回Content属性。相应的ToString() implementation is here

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

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