天天看點

java.net.URL的URL建構方式

java.net.URL的URL建構方式

認識IP、認識URL是進行網絡程式設計的第一步。java.net.URL提供了豐富的URL建構方式,并可以通過java.net.URL來擷取資源。

   認識IP、認識URL是進行網絡程式設計的第一步。java.net.URL提供了豐富的URL建構方式,并可以通過java.net.URL來擷取資源。

    一、認識URL

    類 URL 代表一個統一資源定位符,它是指向網際網路“資源”的指針。資源可以是簡單的檔案或目錄,也可以是對更為複雜的對象的引用,例如對資料庫或搜尋引擎的查詢。

    簡單的可以把URL了解為包含:協定、主機名、端口、路徑、查詢字元串和參數等對象。每一段可以獨立設定。

    應用程式也可以指定一個“相對 URL”,它隻包含到達相對于另一個 URL 的資源的足夠資訊。HTML 頁面中經常使用相對 URL.

    相對 URL 不需要指定 URL 的所有組成部分。如果缺少協定、主機名稱或端口号,這些值将從完整指定的 URL 中繼承。

    由于 URL 不懂 URL 轉義,是以它不會識别同一 URL 的對等編碼和解碼形式。

    注意,URI 類在某些特定情況下對其組成字段執行轉義。建議使用 URI 管理 URL 的編碼和解碼,并使用 toURI() 和 URI.toURL() 實作這兩個類之間的轉換。

    也可以使用 URLEncoder 和 URLDecoder 類,但是隻适用于 HTML 形式的編碼,它與 RFC2396 中定義的編碼機制不同。

    (以上介紹來自Java API doc)

    二、URL對象的建構

    方式很多,可以看看API文檔。

    三、擷取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指定的資源

        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指定的網頁内容

        public static void test2() throws IOException {

                //打開到此 URL 的連接配接并傳回一個用于從該連接配接讀入的 InputStream。

                Reader reader = new InputStreamReader(new BufferedInputStream(url.openStream()));

                while ((c = reader.read()) != -1) {

                        System.out.print((char) c);

                }

                reader.close();

         * 擷取URL的輸入流,并輸出

        public static void test() throws IOException {

                URL url = new URL("http://lavasoft.blog.51cto.com/62575/120430");

                InputStream in = url.openStream();

}

    四、Java所支援的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[i], host, file);

                                System.out.println(schemes[i] + " is supported/r/n");

                        } catch (Exception ex) {

                                System.out.println(schemes[i] + " is not supported/r/n");

                        }

    另外,還可以通過協定處理器自定義協定