熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java網絡編程之URI、URL研究專題六

2013-11-23 18:59:56  來源: Java核心技術 

  Authority =
  
  Default port =
  
  File = /articles/l
  
  Host =
  
  Path = /articles/l
  
  Port =
  
  Protocol = http
  
  Query = null
  
  Ref = null
  
  User Info = null
  
  <html>
  
  <head>
  
  <title>
  
  Java Jeff Articles
  
  </title>
  
  <meta httpequiv=ContentType content=text/html;
  
  charset=ISO
  
  <meta name=author content=Jeff Friesen
  
  <meta name=keywords content=java virtual machine
  
  <script language=JavaScript>
  
  if (navigatorappName == Netscape)
  
  documentwrite (<br>);
  
  </script>
  
  </head>
  
  <body bgcolor=#
  
  <center>
  
  <table border= cellpadding= cellspacing=
  
  <tr>
  
  <td>
  
  <table cellpadding= cellspacing=
  
  <tr>
  
  <td>
  
  <a href=informit/l>
  
  <img alt=InformIT border= src=informitgif></a>
  
  </td>
  
  </tr>
  
  </table>
  
  </td>
  
  <td align=middle>
  
  <img src=titlegif><br>
  
  <a href=/welcome/l>
  
  <img alt=Welcome to Java Jeff! border= src=jupiterjpg>
  
  </a><br>
  
  <img src=/common/clear_dotgif vspace=><br>
  
  <a href=/ads/l>
  
  <img alt=Welcome to Java Jeff! border=
  
  rc=jupiterjpg>
  
  </td>
  
  <td>
  
  <table cellpadding= cellspacing=
  
  <tr>
  
  <td>
  
  <a href=javaworld/l>
  
  <img alt=JavaWorld border= src=javaworldgif></a>
  
  </td>
  
  </tr>
  
  </table>
  
  </td>
  
  </tr>
  
  </table>
  
  </center>
  
  <br>
  
  <font color=#ffffff>
  
  <center>
  
  Best viewed at a resolution of x or higher<br>
  
  <img src=/common/clear_dotgif vspace=><br>
  
  <i>
  
  Copyright ? Jeff Friesen All rights
  
  reserved
  
  </i>
  
  <p>
  
  <a href=/l>
  
  <img alt=Back border= src=/common/backgif></a>
  
  </center>
  
  </font>
  
  </body>
  
  </html>
  
  在上面的信息中輸出標識符是默認端口HTTP是協議上面給出的是輸出的HTML頁面的源代碼
  
  URL的openStream()方法通常返回抽象的InputStream類的一個具體的子類所建立的對象的引用這意味著你必須按字節次序讀取資源數據這種做法是恰當的因為你不知道將要讀取的數據是什麼類型的如果你事先知道要讀取的數據是文本的並且每一行以換行符(\n)結束你就可以按行讀取而不是按字節讀取數據了
  
  下面的代碼片斷演示了把一個InputStream對象包裝進javaioInputStreamReader對象以從位過渡到位字符把結果對象包裝進javaioBufferedReader對象以訪問BufferedReader的readLine()方法並調用readLine()方法從資源讀取文本的所有行
  
  InputStream is = urlopenStream ();
  
  BufferedReader br = new BufferedReader (new InputStreamReader (is));
  
  String line;
  
  while ((line = brreadLine ()) != null)
  
  Systemoutprintln (line);
  
  isclose ();
  
  有時候按字節的次序讀取數據並不方便例如如果資源是JPEG文件那麼獲取一個圖像處理過程並向該過程注冊一個用戶使用數據的方法更好當圖像完整下載後立即顯示它並不困難如果出現這種情況你就有必要使用getContent()方法
  
  當調用getContent()方法時它會返回某種對象的Object引用而你可以調用該對象的方法(在轉換成適當的類型後)采用更方便的方式檢索數據但是在調用該方法前你必須使用instanceof驗證對象的類型防止類產生異常
  
  對於JPEG資源getContent()返回一個對象該對象的類實現了javaawtImageImageProducer接口下面的代碼片斷演示了使用instanceof驗證對象是ImageProducer的並進行了轉換接下來可以調用ImageProducer方法注冊一個用戶並初始化圖像的使用過程
  
  URL url = new URL (args []);
  
  Object o = urlgetContent ();
  
  if (o instanceof ImageProducer)
  
  {
  
  ImageProducer ip = (ImageProducer) o;
  
  //
  
  }
  
  技巧
  
  調用URL的equals(Object o)和sameFile(Object o)方法來決定兩個URL是否相同第一個方法包含了比較的片斷而第二個方法沒有包含你可以參閱SDK文檔查找更多信息
  
  查看一下getContent()方法的源代碼你會找到openConnection()getContent()此外查看一下openStream()方法的源代碼你會發現openConnection()getInputStream()每個方法都首先調用URL的openConnection()方法
  
  這個方法返回抽象的URLConnection類(描述與某些資源的連接)的一個子類建立的對象的引用URLConnection的方法反映了資源和連接的細節信息使我們能編寫代碼向資源寫入信息
  
  列表的URLDemo源代碼演示了openConnection()以及調用一些URLConnection的方法
  
  列表: URLDemojava
  
  // URLDemojava
  
  import javaio*;
  
  import *;
  
  import javautil*;
  
  class URLDemo
  
  {
  
  ublic static void main (String [] args) throws IOException
  
  {
  
  if (argslength != )
  
  {
  
  Systemerrprintln (usage: java URLDemo url);
  
  return;
  
  }
  
  URL url = new URL (args []);
  
  // 返回代表某個資源的連接的新的特定協議對象的引用
  
  URLConnection uc = urlopenConnection ();
  
  // 進行連接
  
  nnect ();
  
  // 打印多種頭部字段的內容
  
  Map m = ucgetHeaderFields ();
  
  Iterator i = mentrySet (erator ();
  
  while (ihasNext ())
  
  Systemoutprintln (inext ());
  
  // 如果資源允許輸入和輸出操作就找出來
  
  Systemoutprintln (Input allowed = +ucgetDoInput ());
  
  Systemoutprintln (Output allowed = +ucgetDoOutput ());
  
  }
  
  }
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26109.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.