Java知多少(104)網路編程之統一資源定位器URL

來源:互聯網
上載者:User

標籤:

統一資源定位器URL(Uniform Resource Locator)是www客戶機訪問Internet時用來標識資源的名字和地址。超文本鏈路由統一資源定位器URL維持。URL的格式是:

    <METHOD>://<HOSTNAME:PORT>/<PATH>/<FILE>

其中:Method是傳輸協議:HOSTNAME是文檔和伺服器所在的Internet主機名稱(網域名稱系統中DNS中的點地址);PORT是服務連接埠號碼(可省略);PATH是路徑名,FILE是檔案名稱。例如:

1     http://www.weixueyuan.net/(http是協議名,www.weixueyuan.net是主機名稱)2     http://www.weixueyuan.net/view/6079.html (www.weixueyuan.net是主機名稱,view/6079.html是檔案路徑和檔案名稱)

 

URL類

Java.net包有URL類,一個URL對象可以表示一個網路資源。程式利用URL對象能實現Internet定址、網路資源的定位串連、在客戶機與伺服器之間直接存取等。URL類的構造方法是
    URL(String s)
其中,s指出網路中的一個資源。

利用URL對象訪問網上資源的方法是:先建立URL對象,如以下代碼所示:

1 URL myURL;2 try {3     myURL = new URL(“http://www.weixueyuan.net:80/”);4 }catch(MalformedURLException e){5     System.out.println(“有錯的URL:”+url+e);6 }

因建立URL對象可能會產生MalformedURLException異常。所以,建立URL對象的代碼應出現在try…catch語句塊中,以便能捕捉網址錯誤異常。

URLConnection類

要接收和發關資訊還要用URLConnection類,程式獲得一個URLConnection對象,相當於完成對指定URL的一個HTTP串連。以下是示意獲得URLConnection對象的代碼。

    URL mu = new URL(“http://www.sun.com/”);//先要建立一個URL對象    URLConnection muC = mu.openConnection();//獲得URLConnection對象

上述代碼說明,先要建立一個URL對象,然後利用URL對象的openConnection()方法,從系統獲得一個URLConnection對象。程式有了URLConnection對象後,就可使用URLConnection類提供的以下方法獲得流對象和實現網路連接:

  1. getOutputStream():獲得向遠程主機發送資訊的OutputStream流對象;
  2. getInputStream():獲得從遠程主機擷取資訊的InputStream流對象。有了網路連接的輸入和輸出資料流,程式就可實現遠程通訊;
  3. connect():設定網路連接。
資訊的發送和接收

發送和接收資訊要獲得流對象,並由流對象建立輸入或輸出資料流對象。然後,就可以用流的方法訪問網上資源。

參見【例 13-2】程式中的方法readByURL(),該方法說明已知網址讀取網頁內容的過程。方法利用網址參數建立一個URL對象url,接著利用對象url的openConnect()方法,獲得URLConnection對象tc,用對象tc的connect()方法建立網路連接,接著獲得網路連接的InputStreamReader類對象in,將對象in,轉化成為BufferedRead對象dis,改為緩衝式輸入。最後,用對象dis的readLine()方法完成讀取網路文本資料。

如同本機資料流一樣,網上資源使用結束後,資料流也應及時關閉。例如,代碼
    dis.close();
關閉先前代碼建立的流dis。

【例 13-2】以資料流方法讀取網頁內容的應用程式。程式運行時,網址從文字框中讀取。

 1 import java.net.*; 2 import java.awt.*; 3 import java.awt.event.*; 4 import java.io.*; 5 import java.javax.swing.*; 6 public class Example10_2{ 7     public static void main(String args[]){ 8         new downNetFile(); 9     }10 }11 class DownNetFile extends JFrame implements ActionListener{12     JTextFileld infield = new JTextField(30);13     JTextarea showArea = new JTextArea();14     JButton b = new JButton(“download”);JPanel p = new JPanel();15     DownNetFile(){16         super(“read network text file application”);17         Container con = this.getContentPane();18         p.add(infield);p.add(b);19         JScrollPane jsp = new JScrollPane(showArea);20         b.addActionListener(this);21         con.add(p,”North”);con.add(jsp,”Center”);22         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);23         setSize(500,400);setVisible(true);24     }25     public void actionPerformed(ActionEvent e){26         readByURL(infield.getText());27     }28     public void readByURL(String urlName){29         try{30             URL url = new URL(urlName);//由網址建立URL對象31             URLConnection tc = url.openConnectin();//獲得URLConnection對象32             tc.connect();//設定網路連接33             InptStreamReader in = new InputStreamReader(tc.getInputStream());34             BufferedReader dis = new BufferedReader(in);//採用緩衝式輸入35             String inline;36             while((inline = dis.readLine())!=null){37                 showArea.append(inline +”\n”);38             }39             dis.close();//網上資源使用結束後,資料流及時關閉40         }catch(MalformedURLException e){41             e.printStackTrace();42        }43         catch(IOException e){e.printStacktrace();}44         /*訪問網上資源可能產生MalformedURLException和IOException異常*/45     }46 }

系列文章:

Java知多少(上)Java知多少(中)Java知多少(78)Java向量(Vector)及其應用Java知多少(79)雜湊表及其應用Java知多少(80)圖形介面設計基礎Java知多少(81)架構視窗基礎Java知多少(82)標籤、按鈕和按鈕事件簡介Java知多少(83)面板基礎:JPanel和JScrollPaneJava知多少(84)圖形介面之布局設計Java知多少(85)文字框和文本區Java知多少(86)文字框和文本區的輸入輸出Java知多少(87)選擇框和選項按鈕Java知多少(88)列表和組合框Java知多少(89)列表和組合框Java知多少(90)菜單Java知多少(91)對話方塊Java知多少(92)捲軸Java知多少(93)滑鼠事件Java知多少(94)鍵盤事件Java知多少(95)繪圖基礎Java知多少(96)繪圖之設定字型和顏色Java知多少(97)繪圖模式概述Java知多少(98)Graphics類的繪圖方法Java知多少(99)Graphics2D類的繪圖方法Java知多少(100)影像處理基礎Java知多少(101)映像緩衝技術Java知多少(102)多媒體基礎Java知多少(103)網路編程之IP地址和InetAddress類

Java知多少(104)網路編程之統一資源定位器URL

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.