के लिए जाँच करने के लिए मैं इस परिदृश्य है:उचित तरीके से यूआरएल समानता
URL u1 = new URL("http://www.yahoo.com/");
URL u2 = new URL("http://www.yahoo.com");
if (u1.equals(u2)) {
System.out.println("yes");
}
if (u1.toURI().equals(u2.toURI())) {
System.out.println("uri equality");
}
if (u1.toExternalForm().equals(u2.toExternalForm())) {
System.out.println("external form equality");
}
if (u1.toURI().normalize().equals(u2.toURI().normalize())) {
System.out.println("uri normalized equality");
}
इन चेकों में से कोई भी सफल रहे हैं। केवल पथ अलग है: u1 का पथ "/" है जबकि u2 का पथ "" है। क्या ये यूआरएल एक ही संसाधन को इंगित कर रहे हैं और कनेक्शन खोलने के बिना ऐसी कोई चीज़ जांचने का कोई तरीका है? क्या मैं यूआरएल के बारे में कुछ मौलिक समझ रहा हूं?
संपादित करें मुझे यह कहना चाहिए कि एक गैर हैकी चेक वांछित है। क्या यह कहना उचित है कि खाली पथ == /? मैं 2007 JavaOne से कोड
उपयोग कर सकते हैं ... इस सवाल पर सभी उत्तर नहीं देता। – Zarel
दिलचस्प .. लेकिन फिर टूरू() परीक्षण सफल होगा अगर वे वास्तव में बराबर थे। –
@ एसबी, अधिक आरएफसी और अधिक दस्तावेज़ीकरण के साथ अद्यतन :) –