標籤:
統一資源定位器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類提供的以下方法獲得流對象和實現網路連接:
- getOutputStream():獲得向遠程主機發送資訊的OutputStream流對象;
- getInputStream():獲得從遠程主機擷取資訊的InputStream流對象。有了網路連接的輸入和輸出資料流,程式就可實現遠程通訊;
- 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