1. 程式人生 > >大資料java篇——URL

大資料java篇——URL

URL(Uniform Resource Locator)中文名為統一資源定位符,有時也被俗稱為網頁地址。表示為網際網路上的資源,如網頁或者FTP地址。

protocol://host:port/path?query#fragment

protocol(協議)可以是 HTTP、HTTPS、FTP 和 File,port 為埠號,path為檔案路徑及檔名。

HTTP 協議的 URL 例項如下:

http://www.runoob.com/index.html?language=cn#j2se

URL 解析:

  • 協議為(protocol):http
  • 主機為(host:port):www.runoob.com
  • 埠號為(port): 80 ,以上URL例項並未指定埠,因為 HTTP 協議預設的埠號為 80。
  • 檔案路徑為(path):/index.html
  • 請求引數(query):language=cn
  • 定位位置(fragment):j2se,定位到網頁中 id 屬性為 j2se 的 HTML 元素位置 。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

URL 類方法

在java.net包中定義了URL類,該類用來處理有關URL的內容。對於URL類的建立和使用,下面分別進行介紹。

java.net.URL提供了豐富的URL構建方式,並可以通過java.net.URL來獲取資源。

序號 方法描述
1 public URL(String protocol, String host, int port, String file) throws MalformedURLException.
通過給定的引數(協議、主機名、埠號、檔名)建立URL。
2 public URL(String protocol, String host, String file) throws MalformedURLException

使用指定的協議、主機名、檔名建立URL,埠使用協議的預設埠。
3 public URL(String url) throws MalformedURLException
通過給定的URL字串建立URL
4 public URL(URL context, String url) throws MalformedURLException
使用基地址和相對URL建立

URL類中包含了很多方法用於訪問URL的各個部分,具體方法及描述如下:

序號 方法描述
1 public String getPath()
返回URL路徑部分。
2 public String getQuery()
返回URL查詢部分。
3 public String getAuthority()
獲取此 URL 的授權部分。
4 public int getPort()
返回URL埠部分
5 public int getDefaultPort()
返回協議的預設埠號。
6 public String getProtocol()
返回URL的協議
7 public String getHost()
返回URL的主機
8 public String getFile()
返回URL檔名部分
9 public String getRef()
獲取此 URL 的錨點(也稱為"引用")。
10 public URLConnection openConnection() throws IOException
開啟一個URL連線,並執行客戶端訪問資源。
11

public InputStream openStream()

開啟到此 URL 的連線並返回一個用於從該連線讀入的 InputStream

:URL.openStream() 在底層的實現也是呼叫了 openConnection生成一個 URLConnection 物件,然後再通過這個物件呼叫的 getInputStream()方法的。因此,當確定 URL 指向的絕對是文字且編碼格式為ASCII時,使用 openStream()方法比較方便,除此之外,就用 openConnection()方法。如例項2中指向的是網站HTML內容,所以用openCollection()方法。

例項1

以上例項演示了使用java.net的URL類獲取URL的各個部分引數:

import java.net.*;
import java.io.*;
 
public class URLDemo
{
   public static void main(String [] args)
   {
      try
      {
         URL url = new URL("http://www.runoob.com/index.html?language=cn#j2se");
         System.out.println("URL 為:" + url.toString());
         System.out.println("協議為:" + url.getProtocol());
         System.out.println("驗證資訊:" + url.getAuthority());
         System.out.println("檔名及請求引數:" + url.getFile());
         System.out.println("主機名:" + url.getHost());
         System.out.println("路徑:" + url.getPath());
         System.out.println("埠:" + url.getPort());
         System.out.println("預設埠:" + url.getDefaultPort());
         System.out.println("請求引數:" + url.getQuery());
         System.out.println("定位位置:" + url.getRef());
      }catch(IOException e)
      {
         e.printStackTrace();
      }
   }
}

以上例項編譯執行結果如下:

URL 為:http://www.runoob.com/index.html?language=cn#j2se
協議為:http
驗證資訊:www.runoob.com
檔名及請求引數:/index.html?language=cn
主機名:www.runoob.com
路徑:/index.html
埠:-1
預設埠:80
請求引數:language=cn
定位位置:j2se

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

URLConnections 類方法

openConnection() 返回一個 java.net.URLConnection。

例如:

  • 如果你連線HTTP協議的URL, openConnection() 方法返回 HttpURLConnection 物件。

  • 如果你連線的URL為一個 JAR 檔案, openConnection() 方法將返回 JarURLConnection 物件。

  • 等等...

URLConnection 方法列表如下:

序號 方法描述
1 Object getContent() 
檢索URL連結內容
2 Object getContent(Class[] classes) 
檢索URL連結內容
3 String getContentEncoding() 
返回頭部 content-encoding 欄位值。
4 int getContentLength() 
返回頭部 content-length欄位值
5 String getContentType() 
返回頭部 content-type 欄位值
6 int getLastModified() 
返回頭部 last-modified 欄位值。
7 long getExpiration() 
返回頭部 expires 欄位值。
8 long getIfModifiedSince() 
返回物件的 ifModifiedSince 欄位值。
9 public void setDoInput(boolean input)
URL 連線可用於輸入和/或輸出。如果打算使用 URL 連線進行輸入,則將 DoInput 標誌設定為 true;如果不打算使用,則設定為 false。預設值為 true。
10 public void setDoOutput(boolean output)
URL 連線可用於輸入和/或輸出。如果打算使用 URL 連線進行輸出,則將 DoOutput 標誌設定為 true;如果不打算使用,則設定為 false。預設值為 false。
11 public InputStream getInputStream() throws IOException
返回URL的輸入流,用於讀取資源
12 public OutputStream getOutputStream() throws IOException
返回URL的輸出流, 用於寫入資源。
13 public URL getURL()
返回 URLConnection 物件連線的URL

例項2

以下例項中URL採用了HTTP 協議。 openConnection 返回HttpURLConnection物件

import java.net.*;
import java.io.*;
public class URLConnDemo
{
   public static void main(String [] args)
   {
      try
      {
         URL url = new URL("http://www.runoob.com");
         URLConnection urlConnection = url.openConnection();
         HttpURLConnection connection = null;
         if(urlConnection instanceof HttpURLConnection)
         {
            connection = (HttpURLConnection) urlConnection;
         }
         else
         {
            System.out.println("請輸入 URL 地址");
            return;
         }
         BufferedReader in = new BufferedReader(
         new InputStreamReader(connection.getInputStream()));
         String urlString = "";
         String current;
         while((current = in.readLine()) != null)
         {
            urlString += current;
         }
         System.out.println(urlString);
      }catch(IOException e)
      {
         e.printStackTrace();
      }
   }
}

以上例項編譯執行結果如下:

$ javac URLConnDemo.java 
$ java URLConnDemo
.....這裡會輸出菜鳥教程首頁(http://www.runoob.com)的 HTML 內容.....