JAVA中三種URL連線方法
JAVA中三種URL連線方法
Java的網路類可以讓你通過網路或者遠端連線來實現應用。而且,這個平臺現在已經可以對國際網際網路以及URL資源進行訪問了。Java的URL類可以讓訪問網路資源就像是訪問你本地的資料夾一樣方便快捷。我們通過使用Java的URL類就可以經由URL完成讀取和修改資料的操作。現在,我們來看一看,如何才能發揮出URL類的效力。 通過URL進行工作 通過一個URL連線,我們就可以確定資源的位置,比如網路檔案、網路頁面以及網路應用程式等。其中包含了許多的語法元素。舉個例子來說,請看下面這個URL連線:http://www.mycompany.com:8080/mywebapps/AWebApp
在這個例子中,我們建立了一個使用完整URL的URL class,其中明確指出了使用的協議是http,主機名稱是www.mycompany.com,埠號碼為8080,檔案/資源為index.html。如果組成URL的語法發生了錯誤,那麼構造器就會發出MalformedURLException。開啟一個URL連線 一旦你成功的建立了一個URL class的例項,你就可以對其進行操作了。但是在你能夠訪問這個URL上的資源和內容之前,你必須要開啟到這些資源與內容上的連線。你可以通過使用openConnection來完成這一操作。 使用openConnection並不需要引數,並且在操作成功之後,它會返回一個URLConnection class的例項。在Listing A中,向我們演示了開啟一個到URL連線的過程。一旦你的連線成功,你就可以開始對這個URLConnection的輸入以及輸出流進行讀和寫的操作了。 從URL連線中讀取資料 使用java.io stream class來從URL中讀取資料是一個非常簡單的過程。一旦你建立了一個成功的連線,那麼你就可以獲得針對這個連線的輸入流並且開始進行寫的操作了。URL可以代表很多不同種類的資料型別所組成的資源。很幸運的是,java.io classes可以以與對檔案流或者socket流進行操作的同樣方式進行對從URLConnection流返回的資料進行操作。在Listing B中,向我們展示瞭如何從URL中讀取文字資料。 對URL進行寫的操作 使用java.io stream classes對URL進行寫的操作同樣也是非常簡單的。一旦你建立了一個成功的連線之後,你就可以得到來自此連線的輸出流並且開始進行寫的操作。當然,只有對於客戶所希望的資料進行寫的操作才是有意義的。同樣的,在獲得並對URLConnection流進行寫的操作之前,你還需要使用setDoOutput(boolean)方式把輸出(Output)屬性設定為真(true)來指定可以進行寫操作的那些連線。Java.io classes允許你把資料寫到URLConnection流,這個操作也和你對檔案流和socket流進行的寫操作一樣。Listing C向我們展示瞭如何把物件資料寫入一個URL。 其它的操作 你可以從URL以及URLConnection物件連線中得到其它型別的資訊,比如說主機名、埠、內容長度、內容編碼以及內容的型別。把這些方法連同stream I/O classes一起使用可以讓你建立複雜而有效的網路客戶應用程式和服務。 對網路的便捷訪問 由Java平臺所提供的URL class讓我們可以方便而有效的訪問網路上的資源,而且可以讓我們象訪問本地檔案一樣的感到輕鬆愉快。我們不用為網路通訊的細節問題操心,只需要把注意力集中到製作有用的應用程式和服務上去。
例子:
package zzm.java.net;
import java.net.URLConnection;
import java.net.HttpURLConnection;
import java.net.JarURLConnection;
import java.net.URL;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.InputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
publicclass URLConnectionTest {
publicstaticvoid main(String []args){
try{
/*
* 方法一
*
URL url = new URL("http://www.sina.com.cn");
URLConnection urlcon = url.openConnection();
InputStream is = urlcon.getInputStream();
*/
/*
* 方法二
*
* URL url = new URL("http://www.yhfund.com.cn");
HttpURLConnection urlcon = (HttpURLConnection)url.openConnection();
InputStream is = urlcon.getInputStream();
*/
/*
* 方法三
* URL url = new URL("http://www.yhfund.com.cn");
InputStream is = url.openStream();
*/
long begintime = System.currentTimeMillis();
URL url = new URL("http://www.yhfund.com.cn");
HttpURLConnection urlcon = (HttpURLConnection)url.openConnection();
urlcon.connect();//獲取連線
InputStream is = urlcon.getInputStream();
BufferedReader buffer = new BufferedReader(new InputStreamReader(is));
StringBuffer bs = new StringBuffer();
String l = null;
while((l=buffer.readLine())!=null){
bs.append(l).append("/n");
}
System.out.println(bs.toString());
//System.out.println(" content-encode:"+urlcon.getContentEncoding());
//System.out.println(" content-length:"+urlcon.getContentLength());
//System.out.println(" content-type:"+urlcon.getContentType());
//System.out.println(" date:"+urlcon.getDate());
System.out.println("總共執行時間為:"+(System.currentTimeMillis()-begintime)+"毫秒");
}catch(IOException e){
System.out.println(e);
}
}
}