Java URL處理

2019-01-16 17:04 更新

Java URL處理

URL(Uniform Resource Locator)中文名為統(tǒng)一資源定位符,有時(shí)也被俗稱為網(wǎng)頁地址。表示為互聯(lián)網(wǎng)上的資源,如網(wǎng)頁或者FTP地址。

本章節(jié)我們將介紹Java是如處理URL的。URL可以分為如下幾個(gè)部分。

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

protocols(協(xié)議)可以是 HTTP, HTTPS, FTP, 和File。port 為端口號(hào)。path為文件路徑及文件名。

HTTP協(xié)議的URL實(shí)例如下:

http://m.hgci.cn/index.html?language=cn#j2se

以上URL實(shí)例并未指定端口,因?yàn)镠TTP協(xié)議默認(rèn)的端口號(hào)為80。


URL 類方法

在java.net包中定義了URL類,該類用來處理有關(guān)URL的內(nèi)容。對(duì)于URL類的創(chuàng)建和使用,下面分別進(jìn)行介紹。

java.net.URL提供了豐富的URL構(gòu)建方式,并可以通過java.net.URL來獲取資源。

序號(hào)方法描述
1public URL(String protocol, String host, int port, String file) throws MalformedURLException.
通過給定的參數(shù)(協(xié)議、主機(jī)名、端口號(hào)、文件名)創(chuàng)建URL。
2public URL(String protocol, String host, String file) throws MalformedURLException
使用指定的協(xié)議、主機(jī)名、文件名創(chuàng)建URL,端口使用協(xié)議的默認(rèn)端口。
3public URL(String url) throws MalformedURLException
通過給定的URL字符串創(chuàng)建URL
4public URL(URL context, String url) throws MalformedURLException
使用基地址和相對(duì)URL創(chuàng)建

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

序號(hào)方法描述
1public String getPath()
返回URL路徑部分。
2public String getQuery()
返回URL查詢部分。
3public String getAuthority()
獲取此 URL 的授權(quán)部分。
4public int getPort()
返回URL端口部分
5public int getDefaultPort()
返回協(xié)議的默認(rèn)端口號(hào)。
6public String getProtocol()
返回URL的協(xié)議
7public String getHost()
返回URL的主機(jī)
8public String getFile()
返回URL文件名部分
9public String getRef()
獲取此 URL 的錨點(diǎn)(也稱為"引用")。
10public URLConnection openConnection() throws IOException
打開一個(gè)URL連接,并運(yùn)行客戶端訪問資源。

實(shí)例

以上實(shí)例演示了使用java.net的URL類獲取URL的各個(gè)部分參數(shù):

// 文件名 : URLDemo.java

import java.net.*;
import java.io.*;

public class URLDemo
{
   public static void main(String [] args)
   {
      try
      {
         URL url = new URL("http://m.hgci.cn/index.html?language=cn#j2se");
         System.out.println("URL is " + url.toString());
         System.out.println("protocol is "
                                    + url.getProtocol());
         System.out.println("authority is "
                                    + url.getAuthority());
         System.out.println("file name is " + url.getFile());
         System.out.println("host is " + url.getHost());
         System.out.println("path is " + url.getPath());
         System.out.println("port is " + url.getPort());
         System.out.println("default port is "
                                   + url.getDefaultPort());
         System.out.println("query is " + url.getQuery());
         System.out.println("ref is " + url.getRef());
      }catch(IOException e)
      {
         e.printStackTrace();
      }
   }
}

以上實(shí)例編譯運(yùn)行結(jié)果如下:

URL is //m.hgci.cn/index.html?language=cn#j2se
protocol is http
authority is m.hgci.cn
file name is /index.htm?language=cn
host is m.hgci.cn
path is /index.html
port is -1
default port is 80
query is language=cn
ref is j2se

URLConnections 類方法

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

例如:

  • 如果你連接HTTP協(xié)議的URL, openConnection() 方法返回 HttpURLConnection 對(duì)象。

  • 如果你連接的URL為一個(gè) JAR 文件, openConnection() 方法將返回 JarURLConnection 對(duì)象。

  • 等等...

URLConnection 方法列表如下:

序號(hào)方法描述
1Object getContent()
檢索URL鏈接內(nèi)容
2Object getContent(Class[] classes)
檢索URL鏈接內(nèi)容
3String getContentEncoding()
返回頭部 content-encoding 字段值。
4int getContentLength()
返回頭部 content-length字段值
5String getContentType()
返回頭部 content-type 字段值
6int getLastModified()
返回頭部 last-modified 字段值。
7long getExpiration()
返回頭部 expires 字段值。
8long getIfModifiedSince()
返回對(duì)象的 ifModifiedSince 字段值。
9public void setDoInput(boolean input)
URL 連接可用于輸入和/或輸出。如果打算使用 URL 連接進(jìn)行輸入,則將 DoInput 標(biāo)志設(shè)置為 true;如果不打算使用,則設(shè)置為 false。默認(rèn)值為 true。
10public void setDoOutput(boolean output)
URL 連接可用于輸入和/或輸出。如果打算使用 URL 連接進(jìn)行輸出,則將 DoOutput 標(biāo)志設(shè)置為 true;如果不打算使用,則設(shè)置為 false。默認(rèn)值為 false。
11public InputStream getInputStream() throws IOException
返回URL的輸入流,用于讀取資源
12public OutputStream getOutputStream() throws IOException
返回URL的輸出流, 用于寫入資源。
13public URL getURL()
返回 URLConnection 對(duì)象連接的URL

實(shí)例

以下實(shí)例中URL采用了HTTP 協(xié)議。 openConnection 返回HttpURLConnection對(duì)象。

// 文件名 : URLConnDemo.java

import java.net.*;
import java.io.*;
public class URLConnDemo
{
   public static void main(String [] args)
   {
      try
      {
         URL url = new URL("http://m.hgci.cn");
         URLConnection urlConnection = url.openConnection();
         HttpURLConnection connection = null;
         if(urlConnection instanceof HttpURLConnection)
         {
            connection = (HttpURLConnection) urlConnection;
         }
         else
         {
            System.out.println("Please enter an HTTP 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();
      }
   }
}

以上實(shí)例編譯運(yùn)行結(jié)果如下:

$ java URLConnDemo

.....a complete HTML content of home page of amrood.com.....
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)