1、認識URLhtml
類 URL 表明一個統一資源定位符,它是指向互聯網「資源」的指針。資源能夠是簡單的文件或目錄,也能夠是更爲複雜的對象的引用,例如對數據庫或搜索引擎的查詢。java
簡單的能夠把URL理解爲包含:協議、主機名、端口、路徑、查詢字符串和參數等對象。每一段能夠獨立設置。數據庫
應用程序也能夠指定一個「相對 URL」,它只包含到達相對於另外一個 URL 的資源的足夠信息。HTML 頁面中常常使用相對 URL.搜索引擎
相對 URL 不須要指定 URL 的全部組成部分。若是缺乏協議、主機名稱或端口號,這些值將從完整指定的 URL 中繼承。編碼
因爲 URL 不懂 URL 轉義,因此它不會識別同一 URL 的對等編碼和解碼形式。url
注意,URI 類在某些特定狀況下對其組成字段執行轉義。建議使用 URI 管理 URL 的編碼和解碼,並使用 toURI() 和 URI.toURL() 實現這兩個類之間的轉換。spa
也可使用 URLEncoder 和 URLDecoder 類,可是隻適用於 HTML 形式的編碼,它與 RFC2396 中定義的編碼機制不一樣。.net
(以上介紹來自Java API doc)指針
2、URL對象的構建code
方式不少,能夠看看API文檔。
3、獲取URL指定的資源
下面給個例子,說明如何獲取到指定的資源。
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
public class TestURL {
public static void main(String[] args) throws IOException {
test4();
test3();
test2();
test();
}
/**
* 獲取URL指定的資源。
*
* @throws IOException
*/
public static void test4() throws IOException {
URL url = new URL("http://lavasoft.blog.51cto.com/attachment/200811/200811271227767778082.jpg");
//得到此 URL 的內容。
Object obj = url.getContent();
System.out.println(obj.getClass().getName());
}
/**
* 獲取URL指定的資源
*
* @throws IOException
*/
public static void test3() throws IOException {
URL url = new URL("http://www.hrtsea.com/down/soft/45.htm");
//返回一個 URLConnection 對象,它表示到 URL 所引用的遠程對象的鏈接。
URLConnection uc = url.openConnection();
//打開的鏈接讀取的輸入流。
InputStream in = uc.getInputStream();
int c;
while ((c = in.read()) != -1)
System.out.print(c);
in.close();
}
/**
* 讀取URL指定的網頁內容
*
* @throws IOException
*/
public static void test2() throws IOException {
URL url = new URL("http://www.hrtsea.com/down/soft/45.htm");
//打開到此 URL 的鏈接並返回一個用於從該鏈接讀入的 InputStream。
Reader reader = new InputStreamReader(new BufferedInputStream(url.openStream()));
int c;
while ((c = reader.read()) != -1) {
System.out.print((char) c);
}
reader.close();
}
/**
* 獲取URL的輸入流,並輸出
*
* @throws IOException
*/
public static void test() throws IOException {
URL url = new URL("http://lavasoft.blog.51cto.com/62575/120430");
//打開到此 URL 的鏈接並返回一個用於從該鏈接讀入的 InputStream。
InputStream in = url.openStream();
int c;
while ((c = in.read()) != -1)
System.out.print(c);
in.close();
}
}
4、Java所支持的URL類型
Java代碼
import java.net.URL;
public class MainClass {
public static void main(String[] args) {
String host = "www.java2s.com";
String file = "/index.html";
String[] schemes = {"http", "https", "ftp", "mailto", "telnet", "file", "ldap", "gopher",
"jdbc", "rmi", "jndi", "jar", "doc", "netdoc", "nfs", "verbatim", "finger", "daytime",
"systemresource"};
for (int i = 0; i < schemes.length; i++) {
try {
URL u = new URL(schemes, host, file);
System.out.println(schemes + " is supported/r/n");
} catch (Exception ex) {
System.out.println(schemes + " is not supported/r/n");
}
}
}
}