2012-01-31 14 views
5

से हेडर कैसे प्राप्त करूं मैं स्थानीय नेटवर्क पर चल रही वेब सेवाओं का पता लगाने के लिए पोर्ट स्कैनर लिख रहा हूं। इन वेब सेवाओं में से कुछ को बुनियादी प्रमाणीकरण की आवश्यकता है - मुझे इन सेवाओं के लिए उपयोगकर्ता नाम/पासवर्ड नहीं पता है, मैं बस उन्हें सूचीबद्ध करना चाहता हूं, इसलिए मैं इस चरण में प्रमाण-पत्र प्रदान नहीं कर सकता। - मुझे पता है वे वापस आ जा रहा है क्योंकि मैं उन्हें Fiddler साथ देख सकते हैं लेकिन HttpWebResponse वस्तु पर सेट हैमैं 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 
        } 

मैं तो हेडर लौटाए गए से सर्वर नाम बाहर पार्स करने कर रहा हूँ: मैं कोड का उपयोग कर रहा GetResponse() विधि के रूप में शून्य अपवाद फेंक रहा है। असल में - मैं इसे फेंकने और अपवाद नहीं करने के लिए कैसे प्राप्त करूं लेकिन हेडर को 401 के स्टेटस कोड के साथ वापस कर दूं।

+0

क्या आपके पास वेब सेवाओं पर नियंत्रण है? अधिक विशेष रूप से, क्या आपके पास उनके कोड पर नियंत्रण है? इसके अलावा, 'पोर्ट स्कैनर' के पास HTTP के साथ कुछ भी नहीं है, शायद टीसीपी क्लाइंट क्लास का उपयोग करने का प्रयास करें। –

+0

नहीं, मेरे पास वेब सेवाओं पर नियंत्रण नहीं है - मैं आईपी कैमरों की तलाश में हूं, इसलिए मैं विशेष रूप से वेब सर्वर के लिए देख रहा हूं। फिर भी सुझाव के लिए धन्यवाद। – Sean

उत्तर

11

यदि आप WebException पर हैं तो आपको ex.Response तक पहुंच होगी और आप वहां से अपने हेडर पुनर्प्राप्त कर सकते हैं।

+0

नोट: यह अनिर्धारित व्यवहार है कि आपको कभी भरोसा नहीं करना चाहिए। –

+5

कौन से स्रोत आपको बता रहे हैं कि यह अनिर्धारित है? यह पूरी तरह से प्रलेखित है। आप एक HTTP टाइमआउट या कनेक्शन विफलता को छोड़कर सबकुछ पर प्रतिक्रिया की उम्मीद कर सकते हैं ... http://msdn.microsoft.com/en-us/library/system.net.webexception.response.aspx – lukiffer

+0

बहुत बढ़िया, धन्यवाद lukiffer – Sean

संबंधित मुद्दे