2008-11-13 5 views
10

जावा क्लास लाइब्रेरी में यूआरएल क्लास की equals() विधि मेजबाननाम के लिए आईपी प्राप्त करने के लिए एक DNS अनुरोध बनाता है, दो आईपी समानता के लिए जांचने के लिए। यह उन यूआरएल के लिए भी होता है जो उसी String से बनाए जाते हैं। क्या इस इंटरनेट का उपयोग करने से बचने का कोई तरीका है?कैसे बचें, URL.equals को जावा में इंटरनेट तक पहुंच की आवश्यकता है?

उत्तर

18

उपयोग java.net.URI बजाय यूआरएल प्रयास करें।

+2

और निश्चित रूप से यह अर्थपूर्ण भावना भी बनाता है, क्योंकि आप स्थान के बजाय पहचानकर्ताओं की तुलना करना चाहते हैं – Gareth

1

URL.equals का उपयोग न करें। जैसा कि प्रलेखन कहता है,

नोट: equals के लिए निर्धारित व्यवहार HTTP में वर्चुअल होस्टिंग के साथ असंगत माना जाता है।

+0

मुझे समानता के लिए परीक्षण कैसे करना चाहिए? – Mnementh

+2

बाहरी फॉर्म प्राप्त करने के लिए आप स्ट्रिंग() या toExternalForm() का उपयोग कर सकते हैं, और उनसे तुलना करें। यहां प्रारंभिक परीक्षण से पता चलता है कि यह DNS तक नहीं पहुंचता है। –

+0

मैंने अभी बिल के जवाब को ऊपर उठाया है। बस अपनी यूआरएल वस्तुओं पर toURI() पर कॉल करें। –

3

तुम सिर्फ यूआरएल तार की तुलना करना चाहते हैं, तो

url1.toString().equals(url2.toString()) 
+0

दो तार बहुत अलग हो सकते हैं लेकिन एक ही संसाधन को इंगित करते हैं। –

+2

यदि आप किसी यूआरएल द्वारा संदर्भित संसाधन की जांच करना चाहते हैं, तो आपको स्पष्ट रूप से इंटरनेट एक्सेस की आवश्यकता है। इसलिए मैंने धारणा की कि वह खुद यूआरएल की तुलना करना चाहता था। इसलिए यदि आप केवल यूआरएल तारों की तुलना करना चाहते हैं तो मेरी योग्यता "। – Rick

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