我正在编写端口扫描程序来检测本地网络上运行的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看到它们,但是当GetResponse()方法抛出异常时,HttpWebResponse对象被设置为null 。基本上 - 我如何让它不抛出异常但返回标题以及状态代码401。
答案 0 :(得分:11)
如果您发现WebException
,则可以访问ex.Response
,并且可以从那里检索您的标题。