Piszę skaner portów, aby wykryć usługi internetowe działające w sieci lokalnej. Niektóre z tych usług internetowych wymagają podstawowego uwierzytelnienia - nie znam nazwy użytkownika/hasła do tych usług, chcę je tylko wymienić, więc nie mogę podać danych uwierzytelniających na tym etapie. Używam kod:Jak uzyskać nagłówki z błędu serwera 401
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
}
ja wtedy parsowania się nazwę serwera z nagłówków, które są zwracane - znam są zwracane, ponieważ widzę ich Skrzypek ale obiekt HttpWebResponse jest ustawiony na null, ponieważ metoda GetResponse() rzuca wyjątek. Zasadniczo - jak sprawić, by nie rzucał i nie powodował wyjątków, ale zwrócił nagłówki wraz z kodem statusu 401.
Czy masz kontrolę nad usługami sieciowymi? A konkretnie czy masz kontrolę nad swoim kodem? Co więcej, "skaner portów" nie ma nic wspólnego z HTTP, może spróbuj użyć klasy TCPClient. –
Nie, nie mam kontroli nad usługami sieciowymi - szukam kamer IP, więc szukam specjalnie dla serwerów internetowych. Dzięki za sugestię. – Sean