Java 简明教程

Java - URLConnection Class

Java URLConnection Class

java.net.URLConnection 是一个抽象类,其子类表示各种类型的 URL 连接。此类的实例既可用于从由 URL 引用的资源中读取,也可用于向该资源中写入。

例如 -

  1. 如果您连接到协议为 HTTP 的 URL,则 URL.openConnection() 方法将返回一个 HttpURLConnection 对象。

  2. 如果您连接到表示 JAR 文件的 URL,则 URL.openConnection() 方法将返回一个 JarURLConnection 对象,依此类推。

Steps to make a connection to a URL

以下是建立与 URL 的连接并开始处理的步骤:

  1. 调用 URL.openConnection() 方法以获取连接对象。

  2. 根据需要使用 connection 对象的各种 setter 方法来更新设置参数和一般请求属性。

  3. 使用 connection 对象的 connect() 方法来创建到远程对象的连接。

  4. 在远程对象可用后,访问远程对象的正文/标头。

URLConnection Class Declaration

public abstract class URLConnection
   extends Object

URLConnection Class Fields

Sr.No.

Field & Description

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 Class Methods

URLConnection 类具有用于设置或确定有关连接信息的许多方法,包括以下方法 −

Sr.No.

Method & Description

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() 返回 content-length 标头字段的值,类型为 long。

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() 从数据文件中加载文件名映射(MIME 表)。

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 的指定“file”组件确定对象的类型。

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) 设置应用程序的内容处理程序工厂。

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 连接的 String 表示形式。

Extends

此类扩展以下类

  1. java.lang.Object

Example of URLConnection Class Methods

以下 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://www.tutorialspoint.com");
         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();
      }
   }
}

此程序的示例运行将产生以下结果:

Output

$ java URLConnectionDemo

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