2012-01-04 14 views
6

हैलो मैं सी # में वेबस्पीडर की तरह कुछ बना रहा हूं। मेरे शोध में मुझे एक समस्या आई, मुझे यह निर्धारित करने की आवश्यकता थी कि कोई लिंक आंतरिक या बाहरी, इनबाउंड या आउटबाउंड है या नहीं। तो मुझे मेरे लिए काम करने के लिए एक समारोह बनाने की जरूरत थी। तो मैं निम्नलिखित कार्य के साथ आया लेकिन मुझे यकीन नहीं है कि क्या यह कार्य पूरा करने के लिए सबसे अच्छा संभव अलगाव है। तो मैं इस समस्या पर आपकी राय चाहूंगा।जांचें कि कोई लिंक आंतरिक या बाहरी है

मुझे लगता है कि लिंक के सामने कोई http: // या https: // के साथ लिंक आंतरिक हैं और यदि मेरे पास http://www.blahblah.com डोमेन है तो परीक्षण की तरह एक लिंक अभी भी आंतरिक होना चाहिए, इसके बावजूद कि यह http है : // सामने, लेकिन http://www.somethingelse.com/?var1=http://www.blahblah.com/test जैसे लिंक बाहरी स्टो है, मैं केवल पहले अक्षर देख रहा हूं।

private Boolean checklinkifinternal(String link) 
     { 
      Boolean isinternal = false; 

      if (link.IndexOf("http://") == 0 || link.IndexOf("https://") == 0) 
      { 
       //Then probably external 
       if (link.IndexOf("http://" + UrlName) == 0 || link.IndexOf("https://" + UrlName) == 0 || link.IndexOf("http://www." + UrlName) == 0 || link.IndexOf("https://www." + UrlName) == 0) 
       { 
        isinternal = true; 
       } 
      } 
      else 
      { 
       isinternal = true; 
      } 

      return isinternal; 
     } 
+0

आप कैसे निर्धारित कर सकते हैं कि यह प्रोटोकॉल द्वारा बाहरी/आंतरिक है या नहीं ...? – Shai

+3

http://127.0.0.1 या http://192.168.1.1 के बारे में क्या ये दोनों आंतरिक हैं लेकिन बाहरी – Lloyd

+0

के रूप में पारित होंगे, वास्तव में उस लॉयड – themis

उत्तर

6
Uri.Compare(new Uri("google.de"), new Uri("Google.de"), UriComponents.Host, UriFormat.SafeUnescaped, StringComparison.CurrentCulture); 
इस

मैं मेरे सिर :)

+0

आंतरिक के लिए/बाहरी परिभाषा। मुझे लगता है कि आप इसे "मैं अभी भी उसी साइट पर हूं जैसा कि मैं पहले था" और नहीं "क्या इस होस्ट में 2 ips हैं जो एक ही साइट पर जाते हैं" –

+0

thanx मैं इस – themis

+0

का परीक्षण करूंगा वोल्कर मैनुअल हाँ मुझे लगता है एक संभावित तथ्य है। यदि 1 डोमेन मिलान दो आईपीएस एक ही साइट होना चाहिए। लोड बैलेंस इस तथ्य का एक उदाहरण है? – themis

1

यह निर्भर करता है के ऊपर से क्या कहेंगे है। यदि आप http URI पर हैं, तो क्या एक डोमेन यूआरआई एक लिंक है जो एक आंतरिक लिंक के रूप में है, भले ही डोमेन नाम समान है? (और इसके विपरीत।) आपको फैसला करना होगा।

इसके अलावा, आपका एल्गोरिदम स्थानीय फाइल सिस्टम (फ़ाइल का उपयोग करके: //) खाते में नहीं लेता है।

+0

हाँ आप फ़ाइल में भी सही हैं, यहां तक ​​कि thogh: //test.zip ऐसा कुछ नहीं है जो मुझे क्रॉल करना चाहिए लेकिन मुझे इसे किसी तरीके से संभालने की ज़रूरत है – themis

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