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.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();
      }
   }
}

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

输出

$ java URLConnectionDemo

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