筆記
Java Network Programming 筆記
n5
三 利用URL類擷取資料
chapter 7 Retrieving Data with URLs
1 建立URL對象
當JVM不支援url的協議時拋出MalformedURLException
(1)public URL(String url) throws MalformedURLException
(2)public URL(String protocol, String hostname, String file) throws MalformedURLException
此構造器設定port為-1,所以協議的預設連接埠將被使用。
file參數應該以"/"開始,包含一個路徑,檔案名稱,和一個可選的錨點
例如: URL u = new URL("http","www.eff.org","/blueribbon.html#intro") ;
(3)public URL(String protocol,String host, int port, String file) throws MalformedURLException
可以指定連接埠,其他和第二個構造器相同
(4)public URL(URL base,String relative) throws MalformedURLException
從一個相對的URL地址和一個base URL對象建立一個絕對URL對象
例如:
try{
URL u1 = new URL("http://www.myweb.com/java/index.html") ;
URL u2 = new URL(u1,"test.html") ;
}
catch(MalformedURLException e){}
去掉u1的檔案名稱,然後加上新檔案名稱test.html,就構成了u2
2得到URL的組成
getFile() 返回總的路徑(並非檔案名稱)即為URL中從第一個"/"開始到"#"為止的內容。如果沒有file部分,java1.3返回一個Null 字元串,java1.1,1.2返回"/"
getHost() 返回主機名稱,不包含user:user這樣的使用者資訊
getPort() 如果URL中沒指定連接埠,則返回-1
getProtocol()
getRef() 返回指定的錨點,如果沒有錨點返回null
//since java1.3
getQuery()
getPath() 和getFile()完全相同
getUserInfo()
getAuthority()
3 從URL得到資料
(1) public final InputStream openStream() throws IOException
開啟URL,得到一個InputStream得到資料
(2) public URLConnection openConnection() throws IOException
開啟URL,得到一個URLConnection對象,URLConnection對象表示網路資源的一個開放串連。當想要直接與伺服器通訊時可使用該方法。URLConnection可以得到伺服器發送的任何東西,而不僅僅是文檔本身。而且還可以寫資料。
(3) public final Object getContent() throws IOException
將從URL下載來的資料看作一個對象,比如圖片,文本,聲音,或一個InputStream對於不能理解的對象。可以用instance of判斷到底是哪種對象,並cast為該對象。
(4) public final Object getContent(Class[] classes) throws IOException //java1.3
可指定哪些種類的class被返回。該方法按照classes數組的順序依次嘗試返回內容。
4 工具方法
public boolean sameFile(URL other)
測試兩個URL是否指向同一個檔案。
public String toExternalForm()
返回一個人類可讀的String表示URL,和toString()方法等同。因此不常用這個方法。
5 public boolean equals(Object o)
相等的含義:Object o也是一個URL對象,兩個URL都指向同一個file(sameFile()定義的),並且兩個URL有相同的引用或都是null。