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

Sea*_*ean 5 .net c# httpwebrequest

我正在编写一个端口扫描程序来检测在本地网络上运行的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
                    }
Run Code Online (Sandbox Code Playgroud)

我再从返回的报头解析出服务器的名称 - 我知道他们正在返回,因为我可以看到他们与小提琴手,但HttpWebResponse对象设置为null作为的GetResponse()方法抛出异常.基本上 - 我如何让它不抛出异常但返回标题以及状态代码401.

luk*_*fer 11

如果你抓到了WebException你可以访问的权限ex.Response,你可以从那里检索你的标题.

  • 有哪些消息来源告诉你这是未定义的?它已完全记录在案.您可以期待除HTTP超时或连接失败之外的所有内容的响应... http://msdn.microsoft.com/en-us/library/system.net.webexception.response.aspx (5认同)