Java URI和URL
阿新 • • 發佈:2018-12-07
1. URI統一資源識別符號
URI(Uniform Resource Identify),統一資源識別符號,是一個用於標識某一網際網路資源名稱的字串。
URI的結構是 [scheme:]scheme-specific-part[#fragment]
和[scheme:][//authority][path][?query][#fragment]
String[] address = new String[]{ "http://user:[email protected]:8080/a/b/c?q=java#fragment", "tel:+123-4567-8910#frag" }; for (String addr : address) { URI uri = new URI(addr); System.out.println("URL: " + uri); System.out.println("Scheme: " + uri.getScheme()); if (uri.isOpaque()) { System.out.println("Specific: " + uri.getSchemeSpecificPart()); } else { System.out.println("UserInfo: " + uri.getUserInfo()); System.out.println("Authority: " + uri.getAuthority()); System.out.println("Host: " + uri.getHost()); System.out.println("Port: " + uri.getPort()); System.out.println("Path: " + uri.getPath()); System.out.println("Query: " + uri.getQuery()); } System.out.println("Fragment: " + uri.getFragment()); }
opaque表示URI是不是透明的,一個不透明的URI一般是不分層次的。輸出
URL: http://user:[email protected]:8080/a/b/c?q=java#fragment Scheme: http UserInfo: user:pwd Authority: user:[email protected]:8080 Host: www.abc.com Port: 8080 Path: /a/b/c Query: q=java Fragment: fragment URL: tel:+123-4567-8910#frag Scheme: tel Specific: +123-4567-8910 Fragment: frag
2. URL統一資源定位符
URL(Uniform Resource Location),統一資源定位符,可以從網際網路上得到的資源的位置和訪問方法的一種簡潔的表示,是網際網路上標準資源的地址。URL主要由Protocol://Authority/File#ref
組成。
String[] address = new String[]{ "http://user:[email protected]:80/a/b/c?q=java#fragment", "ftp://www.abc.com:8080/" }; for (String addr : address) { URL url = new URL(addr); System.out.println("URL: " + url); System.out.println("Protocol: " + url.getProtocol()); System.out.println("UserInfo: " + url.getUserInfo()); System.out.println("Authority: " + url.getAuthority()); System.out.println("Host: " + url.getHost()); System.out.println("Port: " + url.getPort()); System.out.println("DefaultPort:" + url.getDefaultPort()); System.out.println("Path: " + url.getPath()); System.out.println("File: " + url.getFile()); System.out.println("Query: " + url.getQuery()); System.out.println("Ref: " + url.getRef()); }
其中Authority包含UserInfo、Host和Port,File由Path和Query組成。輸出
URL: http://user:[email protected]:80/a/b/c?q=java#fragment
Protocol: http
UserInfo: user:pwd
Authority: user:[email protected]:80
Host: www.abc.com
Port: 80
DefaultPort:80
Path: /a/b/c
File: /a/b/c?q=java
Query: q=java
Ref: fragment
URL: ftp://www.abc.com:8080/
Protocol: ftp
UserInfo: null
Authority: www.abc.com:8080
Host: www.abc.com
Port: 8080
DefaultPort:21
Path: /
File: /
Query: null
Ref: null
3. URLEncoder和URLDecoder
將非文字內容轉換成"%xx"的形式。