2010-10-21 10 views
11

जहां तक ​​मैं समझता हूँ, एक यूआरएल folowing क्षेत्रों के होते हैं:क्या आप एक यूआरएल पार्सिंग कार्यान्वयन के लिए एक लिंक साझा कर सकते हैं?

  • प्रोटोकॉल (http, https, FTP, आदि)
  • उपयोगकर्ता नाम
  • उपयोगकर्ता पासवर्ड
  • होस्ट पता (एक IP पता या एक DNS FQDN)
  • पोर्ट (जिसका मतलब जा सकता है)
  • एक दस्तावेज़ के अंदर सर्वर दस्तावेजों जड़
  • argume के सेट के लिए पथ एनटीएस और
  • दस्तावेज़ हिस्सा (#)

रूप

protocol://user:[email protected]:port/path/document?arg1=val1&arg2=val2#part

मैं एक कोड की जरूरत है किसी भी से इन क्षेत्रों में से किसी का मूल्य प्राप्त करने के लिए (या अशक्त/खाली मान यदि सेट नहीं) को महत्व देता है यूआरएल स्ट्रिंग क्या मैं इसे स्वयं लागू करने के लिए हूं या इसके लिए पहले से ही एक कोड है इसलिए मुझे एक पहिया का आविष्कार करने की आवश्यकता नहीं है?

मुझे विशेष रूप से स्कैला या जावा कोड में रूचि है। सी #, PHP, पायथन या पर्ल कोड भी उपयोगी हो सकता है।

उत्तर

20

यूआरएल कक्षा आपको जो कुछ भी चाहिए उसे देता है। http://download.oracle.com/javase/6/docs/api/java/net/URL.html

URL url = new URL("protocol://user:[email protected]:port/path/document?arg1=val1&arg2=val2#part"); 
url.getProtocol(); 
url.getUserInfo(); 
url.getAuthority(); 
url.getHost(); 
url.getPort(); 
url.getPath(); // document part is contained within the path field 
url.getQuery(); 
url.getRef(); // gets #part 
3

जावा में देखें, बस URL class का उपयोग करें। यह यूआरएल के विभिन्न हिस्सों को प्राप्त करने के लिए getProtocol, getHost इत्यादि जैसी विधियां प्रदान करता है।

8

इसके लिए java.net.URI कक्षा का उपयोग करें। यूआरएल वास्तविक संसाधनों और असली प्रोटोकॉल के लिए हैं। यूआरआई संभवतः अस्तित्वहीन प्रोटोकॉल और संसाधनों के लिए हैं।

+0

तो फिर मैं का यूआरआई का उपयोग करना चाहिए यूआरएल अगर मैं असली वेब पृष्ठों के पते को संचालित करने जा रहा हूं? – Ivan

+0

क्योंकि आपने एक पार्सिंग कार्यान्वयन के लिए कहा है, जो java.net.URI है। java.net.URL एक कनेक्शन तंत्र है। – EJP

0

यूआरएल डिफ़ॉल्ट रूप से ldap समर्थन नहीं करता। कोई यूआरएल बढ़ा सकता है और प्रोटोकॉल जोड़ सकता है, लेकिन मैं एक साधारण पार्सर और एक छोटी सी नई कक्षा के साथ समाप्त हुआ।

0

@Codemwnci जवाब के आधार पर, यहाँ के साथ या तर्क के बिना एक url से filename प्राप्त करने के लिए एक पूर्ण उदाहरण है:

URL videoUrl = new URL("https://somesite.com/path/v/t43.1792-2/1186696120_n.mp4?efg=something"); 
String videoFileName = videoUrl.getPath().substring(videoUrl.getPath().lastIndexOf("/") + 1); 

1186696120_n.mp4

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