检查空 WebResponseObject
Check for null WebResponseObject
我将 Invoke-WebRequest 命令的响应存储在一个变量中:
$response = Invoke-WebRequest -Uri $URL -Body $body -Headers $headers -Method POST
如果我正在执行的处理已完成,我正在点击的 API 将 return 为 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.'
}
None 这些作品。我知道空字符串是一个远射,但我认为其他人应该工作。我在这里做错了什么?
$response
对象是一个 WebResponseObject
(或派生自它的 class),它包含的不仅仅是响应的内容。这就是相等性检查失败的原因。
PS C:\Users\me> Write-Host $response
打印 null
因为 Write-Host
在幕后 $response
对象上调用 ToString()
,returns Content
属性.对应ToString() implementation is here.
因此,如果响应中没有隐藏字符,则以下内容应该有效:
If ($response.Content -eq "null")
{
Write-Host "Server returned null"
}
我将 Invoke-WebRequest 命令的响应存储在一个变量中:
$response = Invoke-WebRequest -Uri $URL -Body $body -Headers $headers -Method POST
如果我正在执行的处理已完成,我正在点击的 API 将 return 为 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.'
}
None 这些作品。我知道空字符串是一个远射,但我认为其他人应该工作。我在这里做错了什么?
$response
对象是一个 WebResponseObject
(或派生自它的 class),它包含的不仅仅是响应的内容。这就是相等性检查失败的原因。
PS C:\Users\me> Write-Host $response
打印 null
因为 Write-Host
在幕后 $response
对象上调用 ToString()
,returns Content
属性.对应ToString() implementation is here.
因此,如果响应中没有隐藏字符,则以下内容应该有效:
If ($response.Content -eq "null")
{
Write-Host "Server returned null"
}