2012-01-31 15 views
5

Yerel ağda çalışan web hizmetlerini algılamak için bir bağlantı noktası tarayıcısı yazıyorum. Bu web hizmetlerinden bazıları temel kimlik doğrulaması gerektirir - Bu hizmetlerin kullanıcı adı/şifresini bilmiyorum, sadece onları listelemek istiyorum, bu nedenle bu aşamada kimlik bilgilerini sağlayamıyorum. - Ben fiddler ile onları görebilirsiniz ama HttpWebResponse nesne olarak ayarlanır çünkü onlar iade ediliyor biliyorum401 Sunucu Hatası'ndan başlıkları nasıl alabilirim

    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 
        } 

Sonra döndürülen başlıklarından sunucu adını ayrıştırma: Ben kodu kullanıyorum GetResponse() yöntemi bir istisna atıyor null. Temel olarak - nasıl atmak ve istisna değil, ancak başlıkları 401

+0

Web servisleri üzerinde kontrolünüz var mı? Daha spesifik olarak, kodlarını kontrol ettiniz mi? Ayrıca, 'port tarayıcı' HTTP ile ilgisi yoktur belki de TCPClient sınıfını kullanmayı deneyin. –

+0

hayır Web servisleri üzerinde kontrol sahibi değilim - IP kameraları arıyorum, bu yüzden özellikle web sunucuları arıyorum. Öneri için teşekkürler. – Sean

cevap

11

ile birlikte döndürür WebException yakalarsanız, ex.Response erişiminiz olur ve üstbilgileri buradan oradan alabilirsiniz.

+0

NOT: Bu, asla güvenmemesi gereken tanımlanmamış bir davranıştır. –

+5

Hangi kaynakların size bu tanımlanmamış olduğunu söylüyorum? Tamamen belgelenmiştir. HTTP zaman aşımı veya bağlantı hatası dışında her şeyde bir yanıt bekleyebilirsiniz ... http://msdn.microsoft.com/en-us/library/system.net.webexception.response.aspx – lukiffer

+0

Harika, teşekkürler lukiffer – Sean

İlgili konular