JavaTM 2 Platform
Standard Ed. 6

java.net
类 HttpURLConnection

java.lang.Object
  继承者 java.net.URLConnection
      继承者 java.net.HttpURLConnection
直接已知子类:
HttpsURLConnection

public abstract class HttpURLConnection
extends URLConnection

支持 HTTP 特定功能的 URLConnection。有关详细信息,请参阅 the spec

每个 HttpURLConnection 实例都可用于生成单个请求,但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络。请求后在 HttpURLConnection 的 InputStream 或 OutputStream 上调用 close() 方法可以释放与此实例关联的网络资源,但对共享的持久连接没有任何影响。如果在调用 disconnect() 时持久连接空闲,则可能关闭基础套接字。

从以下版本开始:
JDK1.1
另请参见:
disconnect()

字段摘要
protected  int chunkLength
          使用存储块编码流模式进行输出时的存储块长度。
protected  int fixedContentLength
          使用固定长度流模式时的固定内容长度。
static int HTTP_ACCEPTED
          HTTP 状态码 202:Accepted。
static int HTTP_BAD_GATEWAY
          HTTP 状态码 502:Bad Gateway。
static int HTTP_BAD_METHOD
          HTTP 状态码 405:Method Not Allowed。
static int HTTP_BAD_REQUEST
          HTTP 状态码 400:Bad Request。
static int HTTP_CLIENT_TIMEOUT
          HTTP 状态码 408:Request Time-Out。
static int HTTP_CONFLICT
          HTTP 状态码 409:Conflict。
static int HTTP_CREATED
          HTTP 状态码 201:Created。
static int HTTP_ENTITY_TOO_LARGE
          HTTP 状态码 413:Request Entity Too Large。
static int HTTP_FORBIDDEN
          HTTP 状态码 403:Forbidden。
static int HTTP_GATEWAY_TIMEOUT
          HTTP 状态码 504:Gateway Timeout。
static int HTTP_GONE
          HTTP 状态码 410:Gone。
static int HTTP_INTERNAL_ERROR
          HTTP 状态码 500:Internal Server Error。
static int HTTP_LENGTH_REQUIRED
          HTTP 状态码 411:Length Required。
static int HTTP_MOVED_PERM
          HTTP 状态码 301:Moved Permanently。
static int HTTP_MOVED_TEMP
          HTTP 状态码 302:Temporary Redirect。
static int HTTP_MULT_CHOICE
          HTTP 状态码 300:Multiple Choices。
static int HTTP_NO_CONTENT
          HTTP 状态码 204:No Content。
static int HTTP_NOT_ACCEPTABLE
          HTTP 状态码 406:Not Acceptable。
static int HTTP_NOT_AUTHORITATIVE
          HTTP 状态码 203:Non-Authoritative Information。
static int HTTP_NOT_FOUND
          HTTP 状态码 404:Not Found。
static int HTTP_NOT_IMPLEMENTED
          HTTP 状态码 501:Not Implemented。
static int HTTP_NOT_MODIFIED
          HTTP 状态码 304:Not Modified。
static int HTTP_OK
          HTTP 状态码 200:OK。
static int HTTP_PARTIAL
          HTTP 状态码 206:Partial Content。
static int HTTP_PAYMENT_REQUIRED
          HTTP 状态码 402:Payment Required。
static int HTTP_PRECON_FAILED
          HTTP 状态码 412:Precondition Failed。
static int HTTP_PROXY_AUTH
          HTTP 状态码 407:Proxy Authentication Required。
static int HTTP_REQ_TOO_LONG
          HTTP 状态码 414:Request-URI Too Large。
static int HTTP_RESET
          HTTP 状态码 205:Reset Content。
static int HTTP_SEE_OTHER
          HTTP 状态码 303:See Other。
static int HTTP_SERVER_ERROR
          已过时。 放错了位置,它不应该存在。
static int HTTP_UNAUTHORIZED
          HTTP 状态码 401:Unauthorized。
static int HTTP_UNAVAILABLE
          HTTP 状态码 503:Service Unavailable。
static int HTTP_UNSUPPORTED_TYPE
          HTTP 状态码 415:Unsupported Media Type。
static int HTTP_USE_PROXY
          HTTP 状态码 305:Use Proxy。
static int HTTP_VERSION
          HTTP 状态码 505:HTTP Version Not Supported。
protected  boolean instanceFollowRedirects
          如果为 true,则协议自动执行重定向。
protected  String method
          HTTP 方法(GET、POST、PUT 等)。
protected  int responseCode
          表示三位字数的 HTTP 状态码 (Status-Code) 的 int
protected  String responseMessage
          HTTP 响应消息。
 
从类 java.net.URLConnection 继承的字段
allowUserInteraction, connected, doInput, doOutput, ifModifiedSince, url, useCaches
 
构造方法摘要
protected HttpURLConnection(URL u)
          HttpURLConnection 的构造方法。
 
方法摘要
abstract  void disconnect()
          指示近期服务器不太可能有其他请求。
 InputStream getErrorStream()
          如果连接失败但服务器仍然发送了有用数据,则返回错误流。
static boolean getFollowRedirects()
          返回指示是否应该自动执行 HTTP 重定向 (3xx) 的 boolean 值。
 String getHeaderField(int n)
          返回 nth 头字段的值。
 long getHeaderFieldDate(String name, long Default)
          返回解析为日期的指定字段的值。
 String getHeaderFieldKey(int n)
          返回 nth 头字段的键。
 boolean getInstanceFollowRedirects()
          返回此 HttpURLConnectioninstanceFollowRedirects 字段的值。
 Permission getPermission()
          返回一个权限对象,其代表建立此对象表示的连接所需的权限。
 String getRequestMethod()
          获取请求方法。
 int getResponseCode()
          从 HTTP 响应消息获取状态码。
 String getResponseMessage()
          获取与来自服务器的响应代码一起返回的 HTTP 响应消息(如果有)。
 void setChunkedStreamingMode(int chunklen)
          此方法用于在预先知道内容长度时启用没有进行内部缓冲的 HTTP 请求正文的流。
 void setFixedLengthStreamingMode(int contentLength)
          此方法用于在预先已知内容长度时启用没有进行内部缓冲的 HTTP 请求正文的流。
static void setFollowRedirects(boolean set)
          设置此类是否应该自动执行 HTTP 重定向(响应代码为 3xx 的请求)。
 void setInstanceFollowRedirects(boolean followRedirects)
          设置此 HttpURLConnection 实例是否应该自动执行 HTTP 重定向(响应代码为 3xx 的请求)。
 void setRequestMethod(String method)
          设置 URL 请求的方法, GET POST HEAD OPTIONS PUT DELETE TRACE 以上方法之一是合法的,具体取决于协议的限制。
abstract  boolean usingProxy()
          指示连接是否通过代理。
 
从类 java.net.URLConnection 继承的方法
addRequestProperty, connect, getAllowUserInteraction, getConnectTimeout, getContent, getContent, getContentEncoding, getContentLength, getContentType, getDate, getDefaultAllowUserInteraction, getDefaultRequestProperty, getDefaultUseCaches, getDoInput, getDoOutput, getExpiration, getFileNameMap, getHeaderField, getHeaderFieldInt, getHeaderFields, getIfModifiedSince, getInputStream, getLastModified, getOutputStream, getReadTimeout, getRequestProperties, getRequestProperty, getURL, getUseCaches, guessContentTypeFromName, guessContentTypeFromStream, setAllowUserInteraction, setConnectTimeout, setContentHandlerFactory, setDefaultAllowUserInteraction, setDefaultRequestProperty, setDefaultUseCaches, setDoInput, setDoOutput, setFileNameMap, setIfModifiedSince, setReadTimeout, setRequestProperty, setUseCaches, toString
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

字段详细信息

method

protected String method
HTTP 方法(GET、POST、PUT 等)。


chunkLength

protected int chunkLength
使用存储块编码流模式进行输出时的存储块长度。值 -1 表示对输出禁用存储块编码。

从以下版本开始:
1.5

fixedContentLength

protected int fixedContentLength
使用固定长度流模式时的固定内容长度。值 -1 表示对输出禁用固定长度流模式。

从以下版本开始:
1.5

responseCode

protected int responseCode
表示三位字数的 HTTP 状态码 (Status-Code) 的 int


responseMessage

protected String responseMessage
HTTP 响应消息。


instanceFollowRedirects

protected boolean instanceFollowRedirects
如果为 true,则协议自动执行重定向。如果为 false,则协议不会自动执行重定向。

此字段由 setInstanceFollowRedirects 方法设置。其值由 getInstanceFollowRedirects 方法返回。

其默认值基于构造 HttpURLConnection 时静态 followRedirects 的值。

另请参见:
setInstanceFollowRedirects(boolean), getInstanceFollowRedirects(), setFollowRedirects(boolean)

HTTP_OK

public static final int HTTP_OK
HTTP 状态码 200:OK。

另请参见:
常量字段值

HTTP_CREATED

public static final int HTTP_CREATED
HTTP 状态码 201:Created。

另请参见:
常量字段值

HTTP_ACCEPTED

public static final int HTTP_ACCEPTED
HTTP 状态码 202:Accepted。

另请参见:
常量字段值

HTTP_NOT_AUTHORITATIVE

public static final int HTTP_NOT_AUTHORITATIVE
HTTP 状态码 203:Non-Authoritative Information。

另请参见:
常量字段值

HTTP_NO_CONTENT

public static final int HTTP_NO_CONTENT
HTTP 状态码 204:No Content。

另请参见:
常量字段值

HTTP_RESET

public static final int HTTP_RESET
HTTP 状态码 205:Reset Content。

另请参见:
常量字段值

HTTP_PARTIAL

public static final int HTTP_PARTIAL
HTTP 状态码 206:Partial Content。

另请参见:
常量字段值

HTTP_MULT_CHOICE

public static final int HTTP_MULT_CHOICE
HTTP 状态码 300:Multiple Choices。

另请参见:
常量字段值

HTTP_MOVED_PERM

public static final int HTTP_MOVED_PERM
HTTP 状态码 301:Moved Permanently。

另请参见:
常量字段值

HTTP_MOVED_TEMP

public static final int HTTP_MOVED_TEMP
HTTP 状态码 302:Temporary Redirect。

另请参见:
常量字段值

HTTP_SEE_OTHER

public static final int HTTP_SEE_OTHER
HTTP 状态码 303:See Other。

另请参见:
常量字段值

HTTP_NOT_MODIFIED

public static final int HTTP_NOT_MODIFIED
HTTP 状态码 304:Not Modified。

另请参见:
常量字段值

HTTP_USE_PROXY

public static final int HTTP_USE_PROXY
HTTP 状态码 305:Use Proxy。

另请参见:
常量字段值

HTTP_BAD_REQUEST

public static final int HTTP_BAD_REQUEST
HTTP 状态码 400:Bad Request。

另请参见:
常量字段值

HTTP_UNAUTHORIZED

public static final int HTTP_UNAUTHORIZED
HTTP 状态码 401:Unauthorized。

另请参见:
常量字段值

HTTP_PAYMENT_REQUIRED

public static final int HTTP_PAYMENT_REQUIRED
HTTP 状态码 402:Payment Required。

另请参见:
常量字段值

HTTP_FORBIDDEN

public static final int HTTP_FORBIDDEN
HTTP 状态码 403:Forbidden。

另请参见:
常量字段值

HTTP_NOT_FOUND

public static final int HTTP_NOT_FOUND
HTTP 状态码 404:Not Found。

另请参见:
常量字段值

HTTP_BAD_METHOD

public static final int HTTP_BAD_METHOD
HTTP 状态码 405:Method Not Allowed。

另请参见:
常量字段值

HTTP_NOT_ACCEPTABLE

public static final int HTTP_NOT_ACCEPTABLE
HTTP 状态码 406:Not Acceptable。

另请参见:
常量字段值

HTTP_PROXY_AUTH

public static final int HTTP_PROXY_AUTH
HTTP 状态码 407:Proxy Authentication Required。

另请参见:
常量字段值

HTTP_CLIENT_TIMEOUT

public static final int HTTP_CLIENT_TIMEOUT
HTTP 状态码 408:Request Time-Out。

另请参见:
常量字段值

HTTP_CONFLICT

public static final int HTTP_CONFLICT
HTTP 状态码 409:Conflict。

另请参见:
常量字段值

HTTP_GONE

public static final int HTTP_GONE
HTTP 状态码 410:Gone。

另请参见:
常量字段值

HTTP_LENGTH_REQUIRED

public static final int HTTP_LENGTH_REQUIRED
HTTP 状态码 411:Length Required。

另请参见:
常量字段值

HTTP_PRECON_FAILED

public static final int HTTP_PRECON_FAILED
HTTP 状态码 412:Precondition Failed。

另请参见:
常量字段值

HTTP_ENTITY_TOO_LARGE

public static final int HTTP_ENTITY_TOO_LARGE
HTTP 状态码 413:Request Entity Too Large。

另请参见:
常量字段值

HTTP_REQ_TOO_LONG

public static final int HTTP_REQ_TOO_LONG
HTTP 状态码 414:Request-URI Too Large。

另请参见:
常量字段值

HTTP_UNSUPPORTED_TYPE

public static final int HTTP_UNSUPPORTED_TYPE
HTTP 状态码 415:Unsupported Media Type。

另请参见:
常量字段值

HTTP_SERVER_ERROR

@Deprecated
public static final int HTTP_SERVER_ERROR
已过时。 放错了位置,它不应该存在。
HTTP 状态码 500:Internal Server Error。

另请参见:
常量字段值

HTTP_INTERNAL_ERROR

public static final int HTTP_INTERNAL_ERROR
HTTP 状态码 500:Internal Server Error。

另请参见:
常量字段值

HTTP_NOT_IMPLEMENTED

public static final int HTTP_NOT_IMPLEMENTED
HTTP 状态码 501:Not Implemented。

另请参见:
常量字段值

HTTP_BAD_GATEWAY

public static final int HTTP_BAD_GATEWAY
HTTP 状态码 502:Bad Gateway。

另请参见:
常量字段值

HTTP_UNAVAILABLE

public static final int HTTP_UNAVAILABLE
HTTP 状态码 503:Service Unavailable。

另请参见:
常量字段值

HTTP_GATEWAY_TIMEOUT

public static final int HTTP_GATEWAY_TIMEOUT
HTTP 状态码 504:Gateway Timeout。

另请参见:
常量字段值

HTTP_VERSION

public static final int HTTP_VERSION
HTTP 状态码 505:HTTP Version Not Supported。

另请参见:
常量字段值
构造方法详细信息

HttpURLConnection

protected HttpURLConnection(URL u)
HttpURLConnection 的构造方法。

参数:
u - URL
方法详细信息

getHeaderFieldKey

public String getHeaderFieldKey(int n)
返回 nth 头字段的键。有些实现可能将 0th 头字段视为特殊状态行,即由 HTTP 服务器返回的状态行。在此情况下,getHeaderField(0) 返回状态行,而 getHeaderFieldKey(0) 返回 null。

覆盖:
URLConnection 中的 getHeaderFieldKey
参数:
n - 索引,其中 n >=0。
返回:
nth 头字段的键;如果键不存在,则返回 null

setFixedLengthStreamingMode

public void setFixedLengthStreamingMode(int contentLength)
此方法用于在预先已知内容长度时启用没有进行内部缓冲的 HTTP 请求正文的流。

如果应用程序尝试写入的数据多于指示的内容长度,或者应用程序在写入指示的内容长度前关闭了 OutputStream,将抛出异常。

启用输出流时,不能自动处理验证和重定向。如果需要验证和重定向,则在读取响应时将抛出 HttpRetryException。可以查询此异常以获取错误的详细信息。

该方法必须在连接 URLConnection 前调用。

参数:
contentLength - 将写入 OutputStream 的字节数。
抛出:
IllegalStateException - 如果已连接 URLConnection 或者已启用另外的流模式。
IllegalArgumentException - 如果指定的内容长度小于零。
从以下版本开始:
1.5
另请参见:
setChunkedStreamingMode(int)

setChunkedStreamingMode

public void setChunkedStreamingMode(int chunklen)
此方法用于在预先知道内容长度时启用没有进行内部缓冲的 HTTP 请求正文的流。在此模式下,使用存储块传输编码发送请求正文。注意,并非所有 HTTP 服务器都支持此模式。

启用输出流时,不能自动处理验证和重定向。如果需要验证和重定向,则在读取响应时将抛出 HttpRetryException。可以查询此异常以获取错误的详细信息。

该方法必须在连接 URLConnection 前调用。

参数:
chunklen - 要写入每个存储块的字节数。如果 chunklen 小于或等于零,则使用默认值。
抛出:
IllegalStateException - 如果已连接 URLConnection 或者已启用其他流模式。
从以下版本开始:
1.5
另请参见:
setFixedLengthStreamingMode(int)

getHeaderField

public String getHeaderField(int n)
返回 nth 头字段的值。有些实现可能将 0th 头字段视为特殊状态行,即由 HTTP 服务器返回的状态行。

此方法可以与 getHeaderFieldKey 方法一起使用来迭代消息中的所有头。

覆盖:
URLConnection 中的 getHeaderField
参数:
n - 索引,其中 n>=0。
返回:
nth 头字段的值;如果值不存在,则返回 null
另请参见:
getHeaderFieldKey(int)

setFollowRedirects

public static void setFollowRedirects(boolean set)
设置此类是否应该自动执行 HTTP 重定向(响应代码为 3xx 的请求)。默认情况下为 true。Applet 不能更改此变量。

如果存在安全管理器,则此方法首先调用安全管理器的 checkSetFactory 方法来确保允许操作。这可能会导致 SecurityException 异常。

参数:
set - 指示是否进行 HTTP 重定向的 boolean 值。
抛出:
SecurityException - 如果安全管理器存在并且其 checkSetFactory 方法不允许进行此操作。
另请参见:
SecurityManager.checkSetFactory(), getFollowRedirects()

getFollowRedirects

public static boolean getFollowRedirects()
返回指示是否应该自动执行 HTTP 重定向 (3xx) 的 boolean 值。

返回:
如果应该自动执行 HTTP 重定向,则返回 true;否则返回 false
另请参见:
setFollowRedirects(boolean)

setInstanceFollowRedirects

public void setInstanceFollowRedirects(boolean followRedirects)
设置此 HttpURLConnection 实例是否应该自动执行 HTTP 重定向(响应代码为 3xx 的请求)。

默认值来自 followRedirects,其默认情况下为 true。

参数:
followRedirects - 指示是否执行 HTTP 重定向的 boolean 值。
从以下版本开始:
1.3
另请参见:
instanceFollowRedirects, getInstanceFollowRedirects()

getInstanceFollowRedirects

public boolean getInstanceFollowRedirects()
返回此 HttpURLConnectioninstanceFollowRedirects 字段的值。

返回:
HttpURLConnectioninstanceFollowRedirects 字段的值。
从以下版本开始:
1.3
另请参见:
instanceFollowRedirects, setInstanceFollowRedirects(boolean)

setRequestMethod

public void setRequestMethod(String method)
                      throws ProtocolException
设置 URL 请求的方法, 以上方法之一是合法的,具体取决于协议的限制。默认方法为 GET。

参数:
method - HTTP 方法
抛出:
ProtocolException - 如果无法重置方法或者请求的方法对 HTTP 无效。
另请参见:
getRequestMethod()

getRequestMethod

public String getRequestMethod()
获取请求方法。

返回:
HTTP 请求方法
另请参见:
setRequestMethod(java.lang.String)

getResponseCode

public int getResponseCode()
                    throws IOException
从 HTTP 响应消息获取状态码。例如,就以下状态行来说:
 HTTP/1.0 200 OK
 HTTP/1.0 401 Unauthorized
 
将分别返回 200 和 401。如果无法从响应中识别任何代码(即响应不是有效的 HTTP),则返回 -1。

返回:
HTTP 状态码或 -1
抛出:
IOException - 如果连接到服务器时发生错误。

getResponseMessage

public String getResponseMessage()
                          throws IOException
获取与来自服务器的响应代码一起返回的 HTTP 响应消息(如果有)。对于如下响应:
 HTTP/1.0 200 OK
 HTTP/1.0 404 Not Found
 
分别提取 String "OK" 和 "Not Found"。如果无法从响应识别任何字符(结果不是有效的 HTTP),则返回 null。

返回:
HTTP 响应消息或 null
抛出:
IOException - 如果连接到服务器时发生错误。

getHeaderFieldDate

public long getHeaderFieldDate(String name,
                               long Default)
从类 URLConnection 复制的描述
返回解析为日期的指定字段的值。结果为指定字段表示的距离格林威治标准时间 1970 年 1 月 1 日的毫秒数。

有些连接类型(例如 http-ng)具有预解析头,所以存在这种形式的 getHeaderField。用于该类型的连接可重写此方法和缩短解析过程。

覆盖:
URLConnection 中的 getHeaderFieldDate
参数:
name - 头字段的名称。
Default - 默认值。
返回:
字段的值,解析为日期。如果该字段缺少或有错误,则返回 Default 参数的值。

disconnect

public abstract void disconnect()
指示近期服务器不太可能有其他请求。调用 disconnect() 并不意味着可以对其他请求重用此 HttpURLConnection 实例。


usingProxy

public abstract boolean usingProxy()
指示连接是否通过代理。

返回:
指示连接是否使用代理的 boolean 值。

getPermission

public Permission getPermission()
                         throws IOException
从类 URLConnection 复制的描述
返回一个权限对象,其代表建立此对象表示的连接所需的权限。如果建立连接不需要任何权限,则此方法返回 null。默认情况下,此方法返回 java.security.AllPermission。子类应重写此方法并返回一个权限对象,该对象最能代表用于建立到 URL 的连接所需的权限。例如表示 file:URL 的 URLConnection 将返回 java.io.FilePermission 对象。

返回的权限可能取决于连接的状态。例如,连接之前的权限可能不同于连接之后的权限。例如,一个 HTTP 服务器(如 foo.com)可能将连接重定向到一台不同的主机(如 bar.com)。在连接之前,连接返回的权限将代表连接到 foo.com 所需的权限,而连接之后返回的权限将是连接到 bar.com 所需的权限。

使用权限通常有两个目的:保护通过 URLConnection 获取的对象的缓存;检查接收方的权限以了解特定的 URL。第一种情况下,应在获取对象之后 再获取权限。例如,在一个 HTTP 连接中,这将代表连接到最终将从该主机获取数据的主机的权限。第二种情况下,应在连接之前 对权限进行获取和检查。

覆盖:
URLConnection 中的 getPermission
返回:
代表建立此 URLConnection 表示的连接所需的权限的权限对象。
抛出:
IOException - 如果计算权限需要网络或文件 I/O 并且在计算过程中出现异常。

getErrorStream

public InputStream getErrorStream()
如果连接失败但服务器仍然发送了有用数据,则返回错误流。典型示例是,当 HTTP 服务器使用 404 响应时,将导致在连接中抛出 FileNotFoundException,但是服务器同时还会发送建议如何操作的 HTML 帮助页。

此方法不会导致启用连接。如果没有建立连接,或者在连接时服务器没有发生错误,或服务器出错但没有发送错误数据,则此方法返回 null。这是默认设置。

返回:
错误流(如果存在);如果没有发生错误、没有建立连接或服务器没有发送有用数据,则返回 null。

JavaTM 2 Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策