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) 返回 n th 头字段的值。 |
long | getHeaderFieldDate(String name, long Default) 返回解析为日期的指定字段的值。 |
String | getHeaderFieldKey(int n) 返回 n th 头字段的键。 |
boolean | getInstanceFollowRedirects() 返回此 HttpURLConnection 的 instanceFollowRedirects 字段的值。 |
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.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
。- 1xx:Informational
- 2xx:Success
- 3xx:Redirection
- 4xx:Client Error
- 5xx:Server Error
responseMessage
protected String responseMessage
-
HTTP 响应消息。
instanceFollowRedirects
protected boolean instanceFollowRedirects
-
如果为
true
,则协议自动执行重定向。如果为false
,则协议不会自动执行重定向。此字段由
setInstanceFollowRedirects
方法设置。其值由getInstanceFollowRedirects
方法返回。其默认值基于构造 HttpURLConnection 时静态 followRedirects 的值。
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)
-
返回
n
th 头字段的键。有些实现可能将0
th 头字段视为特殊状态行,即由 HTTP 服务器返回的状态行。在此情况下,getHeaderField(0)
返回状态行,而getHeaderFieldKey(0)
返回 null。 -
-
覆盖:
-
类
URLConnection
中的getHeaderFieldKey
-
类
-
-
参数:
-
n
- 索引,其中 n >=0。
返回:
-
n
th 头字段的键;如果键不存在,则返回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)
-
返回
n
th 头字段的值。有些实现可能将0
th 头字段视为特殊状态行,即由 HTTP 服务器返回的状态行。此方法可以与
getHeaderFieldKey
方法一起使用来迭代消息中的所有头。 -
-
覆盖:
-
类
URLConnection
中的getHeaderField
-
类
-
-
参数:
-
n
- 索引,其中 n>=0。
返回:
-
n
th 头字段的值;如果值不存在,则返回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)
-
如果应该自动执行 HTTP 重定向,则返回
setInstanceFollowRedirects
public void setInstanceFollowRedirects(boolean followRedirects)
-
设置此
HttpURLConnection
实例是否应该自动执行 HTTP 重定向(响应代码为 3xx 的请求)。默认值来自 followRedirects,其默认情况下为 true。
-
-
参数:
-
followRedirects
- 指示是否执行 HTTP 重定向的boolean
值。
从以下版本开始:
- 1.3 另请参见:
-
instanceFollowRedirects
,getInstanceFollowRedirects()
-
getInstanceFollowRedirects
public boolean getInstanceFollowRedirects()
-
返回此
HttpURLConnection
的instanceFollowRedirects
字段的值。 -
-
返回:
-
此
HttpURLConnection
的instanceFollowRedirects
字段的值。
从以下版本开始:
- 1.3 另请参见:
-
instanceFollowRedirects
,setInstanceFollowRedirects(boolean)
-
此
setRequestMethod
public void setRequestMethod(String method) throws ProtocolException
-
设置 URL 请求的方法,
- GET
- POST
- HEAD
- OPTIONS
- PUT
- DELETE
- TRACE
-
-
参数:
-
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
- 如果连接到服务器时发生错误。
-
HTTP 响应消息或
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。