Я пишу сканер портов для обнаружения веб-служб, работающих в локальной сети. Некоторые из этих веб-служб требуют базовой аутентификации - я не знаю имя пользователя/пароль для этих служб, я просто хочу перечислить их, поэтому на данном этапе я не могу предоставить учетные данные. Я использую код:
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.