Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤與異常

Java 多執行緒

Java 同步

Java 網路程式設計

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java APIs 和框架

Java 類引用

Java 有用資源

Java - URLConnection 類



Java URLConnection 類

java.net.URLConnection 是一個抽象類,其子類表示各種型別的 URL 連線。此類的例項可用於讀取和寫入 URL 引用的資源。

例如:

  • 如果連線到協議為 HTTP 的 URL,則 URL.openConnection() 方法將返回一個 HttpURLConnection 物件。

  • 如果連線到表示 JAR 檔案的 URL,則 URL.openConnection() 方法將返回一個 JarURLConnection 物件,等等。

連線到 URL 的步驟

以下是連線到 URL 並開始處理的步驟。

  • 呼叫 URL.openConnection() 方法以獲取連線物件。

  • 根據需要使用連線物件的各種 setter 方法更新設定引數和常規請求屬性。

  • 使用連線物件的 connect() 方法建立到遠端物件的連線。

  • 遠端物件可用後,訪問遠端物件的內容/標頭。

URLConnection 類宣告

public abstract class URLConnection
   extends Object

URLConnection 類欄位

序號 欄位和描述
1

protected boolean allowUserInteraction

如果為 true,則此 URL 正在上下文中進行檢查,在該上下文中允許使用者互動(例如彈出身份驗證對話方塊)是有意義的。

2

protected boolean connected

如果為 false,則此連線物件尚未建立到指定 URL 的通訊連結。

3

protected boolean doInput

此變數由 setDoInput 方法設定。

3

protected boolean doOutput

此變數由 setDoOutput 方法設定。

4

protected long ifModifiedSince

某些協議支援跳過獲取物件,除非物件在特定時間之後被修改。

5

protected URL url

URL 代表此連線開啟到的全球資訊網上遠端物件。

6

protected boolean useCaches

如果為 true,則協議允許在任何時候使用快取。

URLConnection 類方法

URLConnection 類有許多方法用於設定或確定有關連線的資訊,包括以下內容:

序號 方法和描述
1

void addRequestProperty(String key, String value)

新增由鍵值對指定的常規請求屬性。

2

boolean getAllowUserInteraction()

返回此物件的 allowUserInteraction 欄位的值。

3

int getConnectTimeout()

返回連線超時的設定。

4

Object getContent()

檢索此 URL 連線的內容。

5

Object getContent(Class[] classes)

檢索此 URL 連線的內容。

6

String getContentEncoding()

返回 content-encoding 標頭欄位的值。

7

int getContentLength()

返回 content-length 標頭欄位的值。

8

long getContentLengthLong()

以 long 的形式返回 content-length 標頭欄位的值。

9

String getContentType()

返回 content-type 標頭欄位的值。

10

long getDate()

返回 date 標頭欄位的值。

11

static boolean getDefaultAllowUserInteraction()

返回 allowUserInteraction 欄位的預設值。

12

boolean getDefaultUseCaches()

返回 URLConnection 的 useCaches 標誌的預設值。

13

static boolean getDefaultUseCaches(String protocol)

返回給定協議的 useCaches 標誌的預設值。

14

boolean getDoInput()

返回此 URLConnection 的 doInput 標誌的值。

15

boolean getDoOutput()

返回此 URLConnection 的 doOutput 標誌的值。

16

long getExpiration()

返回 expires 標頭欄位的值。

17

static FileNameMap getFileNameMap()

從資料檔案載入檔名對映(mimetable)。

18

String getHeaderField(int n)

返回第 n 個標頭欄位的值。

19

String getHeaderField(String name)

返回命名標頭欄位的值。

20

long getHeaderFieldDate(String name, long Default)

返回作為日期解析的命名欄位的值。

21

int getHeaderFieldInt(String name, int Default)

返回作為數字解析的命名欄位的值。

22

String getHeaderFieldKey(int n)

返回第 n 個報頭欄位的鍵。

23

long getHeaderFieldLong(String name, long Default)

返回作為數字解析的命名欄位的值。

24

Map<String,List<String>> getHeaderFields()

返回報頭欄位的不可修改的 Map。

25

long getIfModifiedSince()

返回此物件的 ifModifiedSince 欄位的值。

26

InputStream getInputStream()

返回一個從這個開啟的連線讀取的輸入流。

27

int getLastModified()

返回 last-modified 報頭欄位的值。

28

OutputStream getOutputStream()

返回一個寫入此連線的輸出流。

29

Permission getPermission()

返回一個許可權物件,表示由此物件表示的連線所需的許可權。

30

int getReadTimeout()

返回讀取超時設定。返回值為 0 表示該選項已停用(即無限超時)。

31

Map<String,List<String>> getRequestProperties()

返回此連線的常規請求屬性的不可修改的 Map。

32

String getRequestProperty(String key)

返回此連線的命名常規請求屬性的值。

33

URL getURL()

返回此 URLConnection 的 URL 欄位的值。

34

boolean getUseCaches()

返回此 URLConnection 的 useCaches 欄位的值。

35

static String guessContentTypeFromName(String fname)

嘗試根據 URL 的指定“檔案”元件確定物件的型別。

36

static String guessContentTypeFromStream(InputStream is)

嘗試根據輸入流開頭的字元確定輸入流的型別。

37

void setAllowUserInteraction(boolean allowuserinteraction)

設定此 URLConnection 的 allowUserInteraction 欄位的值。

38

void setConnectTimeout(int timeout)

設定指定的超時值(以毫秒為單位),在開啟與此 URLConnection 引用的資源的通訊鏈路時使用。

39

static void setContentHandlerFactory(ContentHandlerFactory fac)

設定應用程式的 ContentHandlerFactory。

40

static void setDefaultAllowUserInteraction(boolean defaultallowuserinteraction)

將所有未來 URLConnection 物件的 allowUserInteraction 欄位的預設值設定為指定值。

41

void setDefaultUseCaches(boolean defaultusecaches)

將 useCaches 欄位的預設值設定為指定值。

42

static void setDefaultUseCaches(String protocol, boolean defaultVal)

將指定協議的 useCaches 欄位的預設值設定為給定值。

43

void setDoInput(boolean doinput)

將此 URLConnection 的 doInput 欄位的值設定為指定值。

44

void setDoOutput(boolean dooutput)

將此 URLConnection 的 doOutput 欄位的值設定為指定值。

45

static void setFileNameMap(FileNameMap map)

設定 FileNameMap。

46

void setIfModifiedSince(long ifmodifiedsince)

將此 URLConnection 的 ifModifiedSince 欄位的值設定為指定值。

47

void setReadTimeout(int timeout)

將讀取超時設定為指定的超時值(以毫秒為單位)。

48

void setRequestProperty(String key, String value)

設定常規請求屬性。

49

void setUseCaches(boolean usecaches)

將此 URLConnection 的 useCaches 欄位的值設定為指定值。

50

String toString()

返回此 URL 連線的字串表示形式。

繼承

此類繼承自以下類

  • java.lang.Object

URLConnection 類方法示例

下面的 URLConnectionDemo 程式連線到從命令列輸入的 URL。

如果 URL 表示 HTTP 資源,則連線將強制轉換為 HttpURLConnection,並且資源中的資料將一次一行地讀取。

package com.tutorialspoint;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

public class URLConnectionDemo {
   public static void main(String [] args) {
      try {
         URL url = new URL("https://tutorialspoint.tw");
         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();
      }
   }
}

此程式的示例執行將產生以下結果:

輸出

$ java URLConnectionDemo

.....a complete HTML content of home page of tutorialspoint.com.....
廣告