“ 远程服务器返回错误:(401) 未经授权”

2023-12-02

我正在尝试验证我的网址是否得到响应。 换句话说,我正在尝试检查该网站的身份验证是否已成功。

I used:

$HTTP_Request = [System.Net.WebRequest]::Create('http://example.com')
$HTTP_Response = $HTTP_Request.GetResponse()
$HTTP_Status = [int]$HTTP_Response.StatusCode

If ($HTTP_Status -eq 200) { 
    Write-Host "Site is OK!" 
} Else {
    Write-Host "The Site may be down, please check!"
}

$HTTP_Response.Close()

我得到了回应:

远程服务器返回错误:(401) 未经授权。

但之后我得到:

网站没问题

这是否意味着没问题?如果不是,有什么问题吗?


你一切正常,因为你重新运行你的命令并且$HTTP_Response包含先前成功运行的对象。将 try/catch 与正则表达式结合使用来提取正确的状态代码(并清理变量):

$HTTP_Response = $null
$HTTP_Request = [System.Net.WebRequest]::Create('http://example.com/')
try{
    $HTTP_Response = $HTTP_Request.GetResponse()
    $HTTP_Status = [int]$HTTP_Response.StatusCode

    If ($HTTP_Status -eq 200) { 
        Write-Host "Site is OK!" 
    }
    else{
        Write-Host ("Site might be OK, status code:" + $HTTP_Status)
    }
    $HTTP_Response.Close()
}
catch{
    $HTTP_Status = [regex]::matches($_.exception.message, "(?<=\()[\d]{3}").Value
    Write-Host ("There was an error, status code:" + $HTTP_Status)
}

.Net HttpWebRequest.GetResponse()在非正常状态代码上引发异常,您可以在此处阅读更多相关信息:返回 http 状态代码 400(错误请求)时,.Net HttpWebRequest.GetResponse() 引发异常

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“ 远程服务器返回错误:(401) 未经授权” 的相关文章

随机推荐