如何从401服务器错误中获取标头

本文关键字:获取 错误 服务器 | 更新日期: 2023-09-27 18:22:08

我正在编写一个端口扫描程序来检测本地网络上运行的web服务。其中一些web服务需要基本的身份验证——我不知道这些服务的用户名/密码,我只想列出它们,所以现阶段我无法提供凭据。我使用的代码是:

                    var request = (HttpWebRequest)WebRequest.Create("http://" + req);
                    request.Referer = "";
                    request.Timeout = 3000;
                    request.UserAgent = "Mozilla/5.0";
                    request.AllowAutoRedirect = false;
                    request.Method = WebRequestMethods.Http.Head;
                    HttpWebResponse response = null;
                    try
                    {
                        response = (HttpWebResponse) request.GetResponse();
                        // I want to parse the headers here for the server name but as the exception is thrown the response object is null.
                    }
                    catch (Exception ex)
                    {
                        //401 error is caught here - response is null
                    }

然后,我从返回的头中解析出服务器名称——我知道它们正在被返回,因为我可以用fiddler看到它们,但HttpWebResponse对象被设置为null,因为GetResponse()方法正在抛出异常。基本上,我如何让它不抛出和异常,而是返回标头和401的状态代码。

如何从401服务器错误中获取标头

如果捕获WebException,则可以访问ex.Response,并且可以从中检索标头。