public abstract class HttpURLConnection extends URLConnection
每个HttpURLConnection实例用于单个请求,但是到HTTP服务器的底层网络连接可能被其他实例透明地共享。 在请求之后,在HttpURLConnection的InputStream或OutputStream上调用close()方法可以释放与该实例关联的网络资源,但对任何共享持久连接没有影响。 调用disconnect()方法可能会关闭底层套接字,如果持久连接当时是空闲的。
HTTP协议处理程序有一些可以通过系统属性访问的设置。 这包括Proxy settings以及various other settings 。
安全权限
如果安装了一个安全管理器,并且如果调用了一种方法,导致尝试打开一个连接,则调用方必须拥有:
SocketPermission
到主机/端口组合的目标URL或 URLPermission
。 如果启用了自动重定向,并且此请求被重定向到另一目的地,则呼叫者还必须具有连接到重定向主机/ URL的权限。
disconnect()
Modifier and Type | Field and Description |
---|---|
protected int |
chunkLength
使用分块编码流模式进行输出时的块长度。
|
protected int |
fixedContentLength
使用固定长度流式传输模式时的固定内容长度。
|
protected long |
fixedContentLengthLong
使用固定长度流式传输模式时的固定内容长度。
|
static int |
HTTP_ACCEPTED
HTTP状态码202:接受。
|
static int |
HTTP_BAD_GATEWAY
HTTP状态码502:坏网关。
|
static int |
HTTP_BAD_METHOD
HTTP状态代码405:不允许的方法。
|
static int |
HTTP_BAD_REQUEST
HTTP状态代码400:错误请求。
|
static int |
HTTP_CLIENT_TIMEOUT
HTTP状态码408:请求超时。
|
static int |
HTTP_CONFLICT
HTTP状态代码409:冲突。
|
static int |
HTTP_CREATED
HTTP状态代码201:创建。
|
static int |
HTTP_ENTITY_TOO_LARGE
HTTP状态码413:请求实体太大。
|
static int |
HTTP_FORBIDDEN
HTTP状态码403:禁止。
|
static int |
HTTP_GATEWAY_TIMEOUT
HTTP状态代码504:网关超时。
|
static int |
HTTP_GONE
HTTP状态代码410:没有。
|
static int |
HTTP_INTERNAL_ERROR
HTTP状态码500:内部服务器错误。
|
static int |
HTTP_LENGTH_REQUIRED
HTTP状态码411:需要长度。
|
static int |
HTTP_MOVED_PERM
HTTP状态代码301:永久移动。
|
static int |
HTTP_MOVED_TEMP
HTTP状态码302:临时重定向。
|
static int |
HTTP_MULT_CHOICE
HTTP状态代码300:多个选择。
|
static int |
HTTP_NO_CONTENT
HTTP状态代码204:无内容。
|
static int |
HTTP_NOT_ACCEPTABLE
HTTP状态码406:不可接受
|
static int |
HTTP_NOT_AUTHORITATIVE
HTTP状态码203:非授权信息。
|
static int |
HTTP_NOT_FOUND
HTTP状态码404:未找到。
|
static int |
HTTP_NOT_IMPLEMENTED
HTTP状态码501:未实现。
|
static int |
HTTP_NOT_MODIFIED
HTTP状态码304:未修改。
|
static int |
HTTP_OK
HTTP状态码200:确定。
|
static int |
HTTP_PARTIAL
HTTP状态码206:部分内容。
|
static int |
HTTP_PAYMENT_REQUIRED
HTTP状态码402:需要支付。
|
static int |
HTTP_PRECON_FAILED
HTTP状态码412:前提条件失败。
|
static int |
HTTP_PROXY_AUTH
HTTP状态码407:需要代理验证。
|
static int |
HTTP_REQ_TOO_LONG
HTTP状态代码414:请求URI太大。
|
static int |
HTTP_RESET
HTTP状态码205:重置内容。
|
static int |
HTTP_SEE_OTHER
HTTP状态码303:查看其他。
|
static int |
HTTP_SERVER_ERROR
已弃用
它是错误的,不应该存在。
|
static int |
HTTP_UNAUTHORIZED
HTTP状态码401:未经授权
|
static int |
HTTP_UNAVAILABLE
HTTP状态码503:服务不可用。
|
static int |
HTTP_UNSUPPORTED_TYPE
HTTP状态码415:不支持的媒体类型。
|
static int |
HTTP_USE_PROXY
HTTP状态码305:使用代理。
|
static int |
HTTP_VERSION
HTTP状态码505:不支持HTTP版本。
|
protected boolean |
instanceFollowRedirects
如果
true ,协议将自动跟随重定向。
|
protected String |
method
HTTP方法(GET,POST,PUT等)。
|
protected int |
responseCode
一个
int 代表三位数的HTTP状态码。
|
protected String |
responseMessage
HTTP响应消息。
|
allowUserInteraction, connected, doInput, doOutput, ifModifiedSince, url, useCaches
Modifier | Constructor and Description |
---|---|
protected |
HttpURLConnection(URL u)
HttpURLConnection的构造方法。
|
Modifier and Type | Method and Description |
---|---|
abstract void |
disconnect()
表示在不久的将来不太可能对服务器的其他请求。
|
InputStream |
getErrorStream()
如果连接失败但服务器发送有用的数据,则返回错误流。
|
static boolean |
getFollowRedirects()
返回一个
boolean 指示是否应自动遵循HTTP重定向(3xx)。
|
String |
getHeaderField(int n)
返回的值
n
th头字段。
|
long |
getHeaderFieldDate(String name, long Default)
返回以日期解析的命名字段的值。
|
String |
getHeaderFieldKey(int n)
返回的关键
n
th头字段。
|
boolean |
getInstanceFollowRedirects()
返回此
HttpURLConnection 的
instanceFollowRedirects 字段的值。
|
Permission |
getPermission()
返回一个表示连接到目标主机和端口所需的权限的 SocketPermission 对象。
|
String |
getRequestMethod()
获取请求方法。
|
int |
getResponseCode()
从HTTP响应消息获取状态代码。
|
String |
getResponseMessage()
获取与服务器的响应代码一起返回的HTTP响应消息(如果有)。
|
void |
setChunkedStreamingMode(int chunklen)
当内容长度
未提前知道时,此方法用于启用HTTP请求体的流式传输,而无需内部缓冲。
|
void |
setFixedLengthStreamingMode(int contentLength)
当预先知道内容长度时,此方法用于启用HTTP请求体的流式传输,而无需内部缓冲。
|
void |
setFixedLengthStreamingMode(long contentLength)
当预先知道内容长度时,此方法用于启用HTTP请求体的流式传输,而无需内部缓冲。
|
static void |
setFollowRedirects(boolean set)
设置HTTP重定向(具有响应代码3xx的请求)是否应该在该类之后自动跟随。
|
void |
setInstanceFollowRedirects(boolean followRedirects)
设置HTTP重定向(响应代码为3xx的请求)是否应该由此
HttpURLConnection 实例自动跟随。
|
void |
setRequestMethod(String method)
设置URL请求的方法,其中之一是:GET POST HEAD OPTIONS PUT DELETE TRACE是符合协议限制的合法的。
|
abstract boolean |
usingProxy()
指示连接正在通过代理。
|
addRequestProperty, connect, getAllowUserInteraction, getConnectTimeout, getContent, getContent, getContentEncoding, getContentLength, getContentLengthLong, getContentType, getDate, getDefaultAllowUserInteraction, getDefaultRequestProperty, getDefaultUseCaches, getDoInput, getDoOutput, getExpiration, getFileNameMap, getHeaderField, getHeaderFieldInt, getHeaderFieldLong, 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
protected String method
protected int chunkLength
-1
表示对于输出禁用分块编码。
protected int fixedContentLength
protected long fixedContentLengthLong
-1
表示固定长度流模式被禁用输出。
protected int responseCode
int
代表三位HTTP状态代码。
protected String responseMessage
protected boolean instanceFollowRedirects
true
,协议将自动跟随重定向。
如果false
,协议不会自动跟随重定向。
该字段由setInstanceFollowRedirects
设置。 其值由getInstanceFollowRedirects
方法返回。
其默认值基于HttpURLConnection构建时间的静态followRedirect的值。
public static final int HTTP_OK
public static final int HTTP_CREATED
public static final int HTTP_ACCEPTED
public static final int HTTP_NOT_AUTHORITATIVE
public static final int HTTP_NO_CONTENT
public static final int HTTP_RESET
public static final int HTTP_PARTIAL
public static final int HTTP_MULT_CHOICE
public static final int HTTP_MOVED_PERM
public static final int HTTP_MOVED_TEMP
public static final int HTTP_SEE_OTHER
public static final int HTTP_NOT_MODIFIED
public static final int HTTP_USE_PROXY
public static final int HTTP_BAD_REQUEST
public static final int HTTP_UNAUTHORIZED
public static final int HTTP_PAYMENT_REQUIRED
public static final int HTTP_FORBIDDEN
public static final int HTTP_NOT_FOUND
public static final int HTTP_BAD_METHOD
public static final int HTTP_NOT_ACCEPTABLE
public static final int HTTP_PROXY_AUTH
public static final int HTTP_CLIENT_TIMEOUT
public static final int HTTP_CONFLICT
public static final int HTTP_GONE
public static final int HTTP_LENGTH_REQUIRED
public static final int HTTP_PRECON_FAILED
public static final int HTTP_ENTITY_TOO_LARGE
public static final int HTTP_REQ_TOO_LONG
public static final int HTTP_UNSUPPORTED_TYPE
@Deprecated public static final int HTTP_SERVER_ERROR
public static final int HTTP_INTERNAL_ERROR
public static final int HTTP_NOT_IMPLEMENTED
public static final int HTTP_BAD_GATEWAY
public static final int HTTP_UNAVAILABLE
public static final int HTTP_GATEWAY_TIMEOUT
public static final int HTTP_VERSION
protected HttpURLConnection(URL u)
u
- 网址
public String getHeaderFieldKey(int n)
n
th头字段。
一些实现可以治疗0
th头字段作为特殊的,即由HTTP服务器返回的状态行。
在这种情况下, getHeaderField(0)
返回状态行,但getHeaderFieldKey(0)
返回null。
getHeaderFieldKey
在
URLConnection
n
- 一个索引,其中
n >=0
。
n
th头字段,或
null
如果键不存在。
public void setFixedLengthStreamingMode(int contentLength)
如果应用程序尝试写入比指定的内容长度更多的数据,或者如果应用程序在写入指定的数量之前关闭OutputStream,则会抛出异常。
启用输出流时,无法自动处理身份验证和重定向。 当需要验证或重定向时读取响应时,将抛出HttpRetryException异常。 可以查询错误的详细信息。
必须在连接URLConnection之前调用此方法。
注意: 建议使用setFixedLengthStreamingMode(long)
代替此方法,因为它允许设置较大的内容长度。
contentLength
- 将要写入OutputStream的字节数。
IllegalStateException
- 如果URLConnection已连接或者已启用不同的流式传输模式。
IllegalArgumentException
- 如果指定了小于零的内容长度。
setChunkedStreamingMode(int)
public void setFixedLengthStreamingMode(long contentLength)
如果应用程序尝试写入比指定的内容长度更多的数据,或者如果应用程序在写入指定的数量之前关闭OutputStream,则会抛出异常。
启用输出流时,无法自动处理身份验证和重定向。 一个HttpRetryException将读取响应时是否需要身份验证或重定向被抛出。 可以查询错误的详细信息。
必须在连接URLConnection之前调用此方法。
通过调用此方法设置的内容长度优先于由setFixedLengthStreamingMode(int)
设置的任何值。
contentLength
- 将要写入OutputStream的字节数。
IllegalStateException
- 如果URLConnection已连接,或者是否已启用不同的流式传输模式。
IllegalArgumentException
- 如果指定内容长度小于零。
public void setChunkedStreamingMode(int chunklen)
启用输出流时,无法自动处理身份验证和重定向。 当需要验证或重定向时读取响应时,将抛出HttpRetryException异常。 可以查询错误的详细信息。
必须在连接URLConnection之前调用此方法。
chunklen
- 要在每个块中写入的字节数。
如果chunklen小于或等于零,将使用默认值。
IllegalStateException
- 如果URLConnection已连接,或者是否已启用不同的流式传输模式。
setFixedLengthStreamingMode(int)
public String getHeaderField(int n)
getHeaderField
在
URLConnection
类
n
- 一个索引,其中
n>=0
。
n
th头字段,或
null
如果该值不存在。
getHeaderFieldKey(int)
public static void setFollowRedirects(boolean set)
如果有安全管理员,该方法首先调用安全管理员的checkSetFactory
方法来确保操作是允许的。 这可能会导致SecurityException。
set
- 一个
boolean
是否遵循HTTP重定向的boolean。
SecurityException
- 如果安全管理器存在,并且其
checkSetFactory
方法不允许操作。
SecurityManager.checkSetFactory()
,
getFollowRedirects()
public static boolean getFollowRedirects()
boolean
指示是否应自动跟踪HTTP重定向(3xx)。
true
如果HTTP重定向应该自动跟随,
false
如果没有。
setFollowRedirects(boolean)
public void setInstanceFollowRedirects(boolean followRedirects)
HttpURLConnection
实例自动跟随。
默认值来自followRedirects,默认值为true。
followRedirects
- 一个
boolean
是否遵循HTTP重定向的boolean。
instanceFollowRedirects
,
getInstanceFollowRedirects()
public boolean getInstanceFollowRedirects()
HttpURLConnection
的
instanceFollowRedirects
字段的值。
HttpURLConnection
的
instanceFollowRedirects
字段。
instanceFollowRedirects
,
setInstanceFollowRedirects(boolean)
public void setRequestMethod(String method) throws ProtocolException
method
- HTTP方法
ProtocolException
- 如果方法无法重置或请求的方法对HTTP无效。
SecurityException
- 如果设置了安全管理器,并且方法为“TRACE”,但未授予“allowHttpTrace”NetPermission。
getRequestMethod()
public String getRequestMethod()
setRequestMethod(java.lang.String)
public int getResponseCode() throws IOException
HTTP/1.0 200 OK
HTTP/1.0 401 Unauthorized
它将分别返回200和401。
如果不能从响应中识别出代码(即响应无效),则返回-1。
IOException
- 连接到服务器是否发生错误。
public String getResponseMessage() throws IOException
HTTP/1.0 200 OK
HTTP/1.0 404 Not Found
分别提取字符串“确定”和“未找到”。
如果无法从响应中识别出结果(结果无效HTTP),则返回null。
null
IOException
- 如果连接到服务器发生错误。
public long getHeaderFieldDate(String name, long Default)
URLConnection
存在这种形式的getHeaderField
,因为某些连接类型(例如, http-ng
)具有预分析头。 该连接类型的类可以覆盖此方法并使解析短路。
getHeaderFieldDate
在
URLConnection
name
- 标题字段的名称。
Default
- 默认值。
Default
参数的值。
public abstract void disconnect()
public abstract boolean usingProxy()
public Permission getPermission() throws IOException
SocketPermission
对象。
getPermission
在
URLConnection
SocketPermission
对象,表示连接到目标主机和端口所需的权限。
IOException
-
IOException
是否发生错误。
public InputStream getErrorStream()
此方法不会导致连接启动。 如果连接未连接,或者服务器在连接时没有出现错误,或者服务器发生错误但没有发送错误数据,则此方法将返回null。 这是默认值。