Sto scrivendo un port scanner per rilevare i servizi Web in esecuzione sulla rete locale. Alcuni di questi servizi Web richiedono l'autenticazione di base - non conosco il nome utente/password per questi servizi, voglio solo elencarli, quindi non posso fornire le credenziali in questa fase. Sto utilizzando il codice:Come ottengo le intestazioni da un errore del server 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
}
sto allora l'analisi fuori il nome del server dalle intestazioni che vengono restituiti - So che vengono restituiti perché posso vedere con i violinista ma l'oggetto HttpWebResponse è impostato su null poiché il metodo GetResponse() genera un'eccezione. Fondamentalmente, come faccio a non generare ed eccezione ma restituire le intestazioni con un codice di stato di 401.
Hai il controllo dei servizi web? Più specificamente, hai il controllo sul loro codice? Inoltre, 'port scanner' non ha nulla a che fare con HTTP, forse prova ad usare la classe TCPClient. –
no non ho il controllo sui servizi web - sto cercando telecamere IP, quindi sto cercando specificamente per i server web. Grazie per il suggerimento però. – Sean