2011-05-16 14 views
8

का उपयोग कर दिए गए यूआरएल से बेस यूआरएल कैसे प्राप्त करें मैं जावा का उपयोग कर बेस यूआरएल लाने की कोशिश कर रहा हूं। मैंने शीर्षक प्राप्त करने के लिए अपने कोड में jtidy पार्सर का उपयोग किया है। मुझे jtidy का उपयोग करके शीर्षक ठीक से मिल रहा है, लेकिन मुझे दिए गए यूआरएल से बेस यूआरएल नहीं मिल रहा है। ,जावा

String s1 = "http://staff.unak.is/andy/GameProgramming0910/new_page_2.htm"; 
String s2 = "http://www.complex.com/pop-culture/2011/04/10-hottest-women-in-fast-and-furious-movies"; 

पहली स्ट्रिंग से मैं "http://staff.unak.is/andy/GameProgramming0910/" एक बेस URL की तरह लाने के लिए चाहते हैं और दूसरी स्ट्रिंग से, मैं "http://www.complex.com/" एक बेस URL की तरह हैं:

मैं इनपुट के रूप में कुछ URL है।

मैं कोड का उपयोग कर रहा:

URL url = new URL(s1); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
InputStream in = conn.getInputStream(); 
Document doc = new Tidy().parseDOM(in, null); 
String titleText = doc.getElementsByTagName("title").item(0).getFirstChild() 
.getNodeValue(); 

मैं titletext हो रही है, लेकिन मुझे पता है कि दिए गए URL ऊपर से आधार URL प्राप्त करने के लिए दे सकते हैं, कृपया?

+7

क्या नियम आपको बता होता है कि 'http: // www.complex.com/'आधार यूआरएल है और नहीं 'http: // www.complex.com/पॉप-संस्कृति/2011/04 /'? –

उत्तर

18

कोशिश java.net.URL वर्ग का उपयोग करने के लिए, यह तुम्हारी मदद करेगा:

दूसरे मामले के लिए, कि यह आसान है, तो आप नए URL (s2) इस्तेमाल कर सकते हैं .getHost();

पहले मामले के लिए, आप मेजबान मिल सकता है और यह भी getFile() विधि का उपयोग करें, और पिछले स्लैश के बाद स्ट्रिंग को दूर ("/")। कुछ ऐसा: (कोड परीक्षण नहीं किया गया)

URL url = new URL(s1); 
String path = url.getFile().substring(0, url.getFile().lastIndexOf('/')); 
String base = url.getProtocol() + "://" + url.getHost() + path; 
+0

धन्यवाद पिह, यह मेरी मदद की। – DJ31

+1

मैं वोट दिया है, लेकिन मुझे लगता है तीसरे बयान होना चाहिए: स्ट्रिंग आधार = url.getProtocol() + ': // "+ url.getHost() + पथ; –

+0

मैं *** लगता है *** कि यूआरएल getProtocol() देता है ": //"।।, लेकिन मैं परीक्षण किया नहीं किया :( – Pih

0

आप संबंधित URL को हल करने के लिए java.net.URL क्लास का उपयोग करते हैं।

पहले मामले के लिए:

new URL(new URL(s1), ".").toString() 

दूसरे मामले के लिए:: रूट पथ की स्थापना: पथ से फ़ाइल नाम को हटाने

new URL(new URL(s2), "/").toString()