1. 程式人生 > >java網路程式設計: URL 和 RULConnection

java網路程式設計: URL 和 RULConnection

一:URL

URL(Uniform Resource Locator) 統一資源定位符,可以直接使用此類找到網際網路上的資源(如一個簡單的網頁)。

範例1:

    package haizhu.com.InetDemo;  
      
    import java.io.InputStream;  
    import java.net.URL;  
    import java.util.Scanner;  
      
    public class URLDemo {  
        public static void main(String[] args) throws Exception{  
            URL url = new URL("http","www.mldnjava.cn",80,"/curriculum.htm");           // 指定操作的URL  
            InputStream input = url.openStream();                                       // 開啟輸入流,讀取URL內容  
            Scanner scan = new Scanner(input);                                          // 例項化Scanner 物件  
            scan.useDelimiter("\n");                                                    // 設定讀取分隔符  
            while(scan.hasNext()){                                                      // 不斷讀取內容  
                System.out.println(scan.next());                                        // 輸出內容  
            }  
        }  
    }  

使用URL 找到指定主機上的 curriculum.htm 頁面資源,並使用Scanner 將頁面中的內容下載下來直接顯示在螢幕上。

二:URLConnection

URLConnection 是封裝訪問遠端網路資源一般方法的類,通過它可以建立於遠端伺服器的連結,檢查遠端資源的一些屬性。

URLConnection 物件可以通過openConnection() 方法取得,下面通過URLConnection 物件取得一個 URL 的基本資訊:

範例2:

    package haizhu.com.InetDemo;  
      
    import java.net.URL;  
    import java.net.URLConnection;  
      
    public class URLConnectionDemo {  
        public static void main(String[] args) throws Exception{  
            URL url = new URL("http://www.mldnjava.cn");                    // 指定操作的 URL   
            URLConnection urlCon = url.openConnection();                    // 簡歷連線  
            System.out.println("內容大小:"+urlCon.getContentLength());          // 取得內容大小  
            System.out.println("內容型別:"+urlCon.getContentType());            // 取得內容型別  
        }  
    }  

2.URL和URLConnection類

網路中的URL(Uniform Resource Locator)是統一資源定位符的簡稱。它表示Internet上某一資源的地址。通過URL我們可以訪問Internet上的各種網路資源,比如最常見的WWW,FTP站點。 URL可以被認為是指向網際網路資源的“指標”,通過URL可以獲得網際網路資源相關資訊,包括獲得URL的InputStream物件獲取資源的資訊,以及一個到URL所引用遠端物件的連線URLConnection。 URLConnection物件可以向所代表的URL傳送請求和讀取URL的資源。通常,建立一個和URL的連線,需要如下幾個步驟:

  1. 建立URL物件,並通過呼叫openConnection方法獲得URLConnection物件;
  2. 設定URLConnection引數和普通請求屬性;
  3. 向遠端資源傳送請求;
  4. 遠端資源變為可用,程式可以訪問遠端資源的頭欄位和通過輸入流來讀取遠端資源返回的資訊。
這裡需要重點討論一下第三步:如果只是傳送GET方式請求,使用connect方法建立和遠端資源的連線即可;如果是需要傳送POST方式的請求,則需要獲取URLConnection物件所對應的輸出流來發送請求。這裡需要注意的是,由於GET方法的引數傳遞方式是將引數顯式追加在地址後面,那麼在構造URL物件時的引數就應當是包含了引數的完整URL地址,而在獲得了URLConnection物件之後,就直接呼叫connect方法即可傳送請求。而POST方法傳遞引數時僅僅需要頁面URL,而引數通過需要通過輸出流來傳遞。另外還需要設定頭欄位。以下是兩種方式的程式碼:
//1. 向指定URL傳送GET方法的請求 
String urlName = url + "?" + param;  URL realUrl = new URL(urlName); 
 //開啟和URL之間的連線
 URLConnection conn = realUrl.openConnection();  
//設定通用的請求屬性 
conn.setRequestProperty("accept", "*/*"); 
 conn.setRequestProperty("connection", "Keep-Alive");  
conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); 
 //建立實際的連線 conn.connect();     
 //2. 向指定URL傳送POST方法的請求 URL realUrl = new URL(url);  
//開啟和URL之間的連線 URLConnection conn = realUrl.openConnection();  
 //設定通用的請求屬性 
conn.setRequestProperty("accept", "*/*");  
conn.setRequestProperty("connection", "Keep-Alive");  
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");  
 //傳送POST請求必須設定如下兩行 
conn.setDoOutput(true);  
conn.setDoInput(true);  
//獲取URLConnection物件對應的輸出流
 out = new PrintWriter(conn.getOutputStream());  
//傳送請求引數
 out.print(param);