Cyh的博客

          Email:kissyan4916@163.com
          posts - 26, comments - 19, trackbacks - 0, articles - 220

          網絡編程>>獲取URL的信息

          Posted on 2009-12-12 00:19 啥都寫點 閱讀(298) 評論(0)  編輯  收藏 所屬分類: J2SE

            Java似乎是專門為網絡設計的,用其開發網絡軟件特別便利,它對網絡的操作都在IP層以上,也就是只能對TCP/UDP進行操作。Java的網絡編程主要有3類:一是基于URL的網絡編程,二是基于Socket的網絡編程,三是基于UDP數據報的網絡編程,此外,還可以通過Java獲取本機的網絡配置信息,如IP地址、域名等。所有關于網絡編程的類庫都在java.net包中。
              
                   URL的格式由三部分組成:第一部分是協議(或稱為服務方式);第二部分是存有該資源的主機IP地址或域名(有時也包括端口號);第三部分是主機資源的具體地址,如目錄和文件名等。第一部分和第二部分之間用"://"符號隔開,第二部分和第三部分用"/"符號隔開,第一部分和第二部分不可缺少,第三部分可以省略。

                   java.net.URL類描述一個URL,通過該類提供的get系列方法,能夠獲取URL的協議名、主機IP或者域名、端口號、主機資源的具體地址等信息。
                  URL類的openConnection方法打開URL,得到一個URLConnection,該對象提供很多關于URL所引用的資源的信息,比如內容類型、內容的長度、編碼方式、最后修改時間等。
                  如果URL的協議時HTTP,那么還可以獲得請求的方法、響應消息和響應代碼。


          import java.io.IOException;
          import java.net.HttpURLConnection;
          import java.net.URL;
          import java.net.URLConnection;
          import java.util.Date;

          /**
           * 本例演示通過URL能夠得到的信息
           *
          */

          public class GetURLInfo {
              
          /**
               * 輸出一個URL相關的信息,主要使用了URLConnection類
               
          */

              
          public static void printInfo(URL url) throws IOException {
                  
          // URL基本信息
                  System.out.println("  File: " + url.getFile());
                  System.out.println(
          "  Protocol: " + url.getProtocol());
                  System.out.println(
          "  Host: " + url.getHost());
                  System.out.println(
          "  Port: " + url.getPort());
                  System.out.println(
          "  Path: " + url.getPath());
                  
                  
          // 獲取URLConnection對象
                  URLConnection c = url.openConnection();
                  
          // 連接到URL,如果不能連接到URL,則會出現超時信息。
                  c.connect();
              
                  
          // 顯示信息
                  System.out.println("  Content Type: " + c.getContentType());
                  System.out.println(
          "  Content Encoding: " + c.getContentEncoding());
                  System.out.println(
          "  Content Length: " + c.getContentLength());
                  System.out.println(
          "  Date: " + new Date(c.getDate()));
                  System.out.println(
          "  Last Modified: " +new Date(c.getLastModified()));
                  System.out.println(
          "  Expiration: " + new Date(c.getExpiration()));
              
                  
          // 如果是HTTP連接,則能提供更豐富的信息
                  if (c instanceof HttpURLConnection) {
                      HttpURLConnection h 
          = (HttpURLConnection) c;
                      System.out.println(
          "  Request Method: " + h.getRequestMethod());
                      System.out.println(
          "  Response Message: " +h.getResponseMessage());
                      System.out.println(
          "  Response Code: " + h.getResponseCode());
                  }

              }

              
              
          public static void main(String[] args) {
                  
          try {
                      String urlStr 
          = "http://www.sina.com.cn:80/index.htm";
                      URL url 
          = new URL(urlStr);
                      printInfo(url);
                  }
           catch (Exception e) {
                      System.err.println(e);
                  }

              }

          }



                                                                                                                 --    學海無涯
                  

          主站蜘蛛池模板: 锡林郭勒盟| 枣庄市| 河津市| 巴林左旗| 兴仁县| 临高县| 墨竹工卡县| 昌图县| 汤原县| 西乌珠穆沁旗| 湖北省| 胶南市| 抚顺县| 贵港市| 铁力市| 钦州市| 东乌| 泸州市| 和龙市| 新野县| 枣强县| 诸暨市| 南平市| 沅江市| 犍为县| 视频| 青川县| 甘肃省| 石城县| 长岛县| 麻城市| 永新县| 孟津县| 宝清县| 临江市| 白朗县| 邵东县| 石嘴山市| 宁强县| 贵州省| 威海市|