Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误和异常

Java 多线程

Java 同步

Java 网络

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级 Java

Java 杂项

Java API 和框架

Java 类参考

Java 有用资源

Java - HttpURLConnection 类



Java HttpURLConnection 类

java.net.HttpURLConnection 是一个抽象类,表示特定于 HTTP 的 URL 连接。此类的实例可用于读取和写入 URL 引用的资源。

例如 -

  • 如果您连接到协议为 HTTPURL,则 URL.openConnection() 方法会返回一个 HttpURLConnection 对象。

连接到 URL 的步骤

以下是连接到 URL 并开始处理的步骤。

  • 调用 URL.openConnection() 方法 以获取基于 HTTP 的 URL 的 HttpURLConnection 对象。

  • 根据需要使用连接对象的各种 setter 方法更新设置参数和常规请求属性。

  • 使用连接对象的 connect() 方法创建到远程对象的连接。

  • 远程对象可用后,访问远程对象的内容/标头。

HttpURLConnection 类声明

public abstract class HttpURLConnection
   extends URLConnection

HttpURLConnection 类字段

序号 字段和描述
1

protected int chunkLength

使用分块编码流模式输出时的分块长度。

2

protected int fixedContentLength

使用固定长度流模式时的固定内容长度。

3

protected long fixedContentLengthLong

使用固定长度流模式时的固定内容长度。

4

static int HTTP_ACCEPTED

HTTP 状态代码 202:已接受。

5

static int HTTP_BAD_GATEWAY

HTTP 状态代码 502:错误网关。

6

static int HTTP_BAD_METHOD

HTTP 状态代码 405:方法不允许。

7

static int HTTP_BAD_REQUEST

HTTP 状态代码 400:错误请求。

8

static int HTTP_CLIENT_TIMEOUT

HTTP 状态代码 408:请求超时。

9

static int HTTP_CONFLICT

HTTP 状态代码 409:冲突。

10

static int HTTP_CREATED

HTTP 状态代码 201:已创建。

11

static int HTTP_ENTITY_TOO_LARGE

HTTP 状态代码 413:请求实体过大。

12

static int HTTP_FORBIDDEN

HTTP 状态代码 403:禁止。

13

static int HTTP_GATEWAY_TIMEOUT

HTTP 状态代码 504:网关超时。

14

static int HTTP_GONE

HTTP 状态代码 410:已消失。

15

static int HTTP_INTERNAL_ERROR

HTTP 状态代码 500:内部服务器错误。

16

static int HTTP_LENGTH_REQUIRED

HTTP 状态代码 411:需要长度。

17

static int HTTP_MOVED_PERM

HTTP 状态代码 301:永久移动。

18

static int HTTP_MOVED_TEMP

HTTP 状态代码 302:临时重定向。

19

static int HTTP_MULT_CHOICE

HTTP 状态代码 300:多种选择。

20

static int HTTP_NO_CONTENT

HTTP 状态代码 204:无内容。

21

static int HTTP_NOT_ACCEPTABLE

HTTP 状态代码 406:不可接受。

22

static int HTTP_NOT_AUTHORITATIVE

HTTP 状态代码 203:非权威信息。

23

static int HTTP_NOT_FOUND

HTTP 状态代码 404:未找到。

24

static int HTTP_NOT_IMPLEMENTED

HTTP 状态代码 501:未实现。

25

static int HTTP_NOT_MODIFIED

HTTP 状态代码 304:未修改。

26

static int HTTP_OK

HTTP 状态代码 200:确定。

27

static int HTTP_PARTIAL

HTTP 状态代码 206:部分内容。

28

static int HTTP_PAYMENT_REQUIRED

HTTP 状态代码 402:需要付款。

29

static int HTTP_PRECON_FAILED

HTTP 状态代码 412:前提条件失败。

30

static int HTTP_PROXY_AUTH

HTTP 状态代码 407:需要代理身份验证。

31

static int HTTP_REQ_TOO_LONG

HTTP 状态代码 414:请求 URI 过长。

32

static int HTTP_RESET

HTTP 状态代码 205:重置内容。

33

static int HTTP_SEE_OTHER

HTTP 状态代码 303:查看其他。

34

static int HTTP_UNAUTHORIZED

HTTP 状态代码 401:未授权。

35

static int HTTP_UNAVAILABLE

HTTP 状态代码 503:服务不可用。

36

static int HTTP_UNSUPPORTED_TYPE

HTTP 状态代码 415:不支持的媒体类型。

37

static int HTTP_USE_PROXY

HTTP 状态代码 305:使用代理。

38

static int HTTP_VERSION

HTTP 状态代码 505:不支持的 HTTP 版本。

39

protected boolean instanceFollowRedirects

如果为 true,则协议将自动跟随重定向。

40

protected String method

HTTP 方法(GET、POST、PUT 等)。

41

protected int responseCode

表示三位数 HTTP 状态代码的整数。

42

protected String responseMessage

HTTP 响应消息。

HttpURLConnection 类方法

HttpURLConnection 类有许多方法用于设置或确定有关连接的信息,包括以下内容 -

序号 方法和描述
1

abstract void disconnect()

表示在不久的将来不太可能向服务器发送其他请求。

2

InputStream getErrorStream()

如果连接失败但服务器仍然发送了有用的数据,则返回错误流。

3

static boolean getFollowRedirects()

返回一个布尔值,指示是否应自动跟随 HTTP 重定向 (3xx)。

4

String getHeaderField(int n)

返回第 n 个头部字段的值。

5

String getHeaderFieldKey(int n)

返回第 n 个头部字段的键。

6

boolean getInstanceFollowRedirects()

返回此 HttpURLConnection 的 instanceFollowRedirects 字段的值。

7

Permission getPermission()

返回一个 SocketPermission 对象,表示连接到目标主机和端口所需的权限。

8

String getRequestMethod()

获取请求方法。

9

int getResponseCode()

从 HTTP 响应消息中获取状态码。

10

String getResponseMessage()

获取 HTTP 响应消息(如果有),该消息与服务器返回的响应代码一起返回。

11

void setAuthenticator(Authenticator auth)

提供一个 Authenticator,当通过 HTTP 协议为该 HttpURLConnection 请求身份验证时使用。

12

void setChunkedStreamingMode(int chunklen)

此方法用于启用 HTTP 请求主体流而无需内部缓冲,当内容长度事先未知时。

13

void setFixedLengthStreamingMode(int contentLength)

此方法用于启用 HTTP 请求主体流而无需内部缓冲,当内容长度事先已知时。

14

void setFixedLengthStreamingMode(long contentLength)

此方法用于启用 HTTP 请求主体流而无需内部缓冲,当内容长度事先已知时。

15

static void setFollowRedirects(boolean set)

设置此类是否应自动跟随 HTTP 重定向(响应代码为 3xx 的请求)。

16

void setInstanceFollowRedirects(boolean followRedirects)

设置此 HttpURLConnection 实例是否应自动跟随 HTTP 重定向(响应代码为 3xx 的请求)。

17

void setRequestMethod(String method)

设置 URL 请求的方法,以下方法是合法的:GET POST HEAD OPTIONS PUT DELETE TRACE,但受协议限制。

18

abstract boolean usingProxy()

指示连接是否通过代理。

继承

此类继承以下类

  • java.lang.Object

  • java.net.URLConnection

Java HttpURLConnection 类示例

以下 HttpURLConnection 程序连接到从命令行输入的 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 HttpUrlConnectionDemo {
   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 HttpURLConnection

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