Как получить заголовки из-за ошибки сервера 401 - PullRequest
5 голосов
/ 31 января 2012

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

                    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.

1 Ответ

11 голосов
/ 31 января 2012

Если вы поймаете WebException, у вас будет доступ к ex.Response, и вы сможете получить свои заголовки оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...