URLConnection,支持HTTP特定功能。
有关详细信息,请参见
the spec
。
每个HttpURLConnection实例用于发出单个请求,但是与HTTP服务器的基础网络连接可以由其他实例透明地共享。
在请求之后调用HttpURLConnection的InputStream或OutputStream上的close()方法可以释放与此实例关联的网络资源,但不会影响任何共享持久连接。
如果此时持久连接处于空闲状态,则调用disconnect()方法可能会关闭底层套接字。
HTTP协议处理程序有一些可以通过“系统属性”访问的设置。
这包括
Proxy settings
以及
various other settings
。
如果安装了安全管理器,并且调用了导致尝试打开连接的方法,则调用者必须拥有:
a“连接”
SocketPermission
到目标URL或的主机/端口组合
允许此请求的
URLPermission
。
如果启用了自动重定向,并且此请求被重定向到另一个目标,则调用者还必须具有连接到重定向主机/ URL的权限。
从以下版本开始:
另请参见:
disconnect()
addRequestProperty
,
connect
,
getAllowUserInteraction
,
getConnectTimeout
,
getContent
,
getContent
,
getContentEncoding
,
getContentLength
,
getContentLengthLong
,
getContentType
,
getDate
,
getDefaultAllowUserInteraction
,
getDefaultRequestProperty
,
getDefaultUseCaches
,
getDefaultUseCaches
,
getDoInput
,
getDoOutput
,
getExpiration
,
getFileNameMap
,
getHeaderField
,
getHeaderFieldDate
,
getHeaderFieldInt
,
getHeaderFieldLong
,
getHeaderFields
,
getIfModifiedSince
,
getInputStream
,
getLastModified
,
getOutputStream
,
getReadTimeout
,
getRequestProperties
,
getRequestProperty
,
getURL
,
getUseCaches
,
guessContentTypeFromName
,
guessContentTypeFromStream
,
setAllowUserInteraction
,
setConnectTimeout
,
setContentHandlerFactory
,
setDefaultAllowUserInteraction
,
setDefaultRequestProperty
,
setDefaultUseCaches
,
setDefaultUseCaches
,
setDoInput
,
setDoOutput
,
setFileNameMap
,
setIfModifiedSince
,
setReadTimeout
,
setRequestProperty
,
setUseCaches
,
toString
声明方法的类 java.lang.
Object
clone
,
equals
,
finalize
,
getClass
,
hashCode
,
notify
,
notifyAll
,
wait
,
wait
,
wait
如果是
true
,协议将自动跟随重定向。
如果是
false
,协议将不会自动跟随重定向。
该字段由
setInstanceFollowRedirects
方法设置。
它的值由
getInstanceFollowRedirects
方法返回。
其默认值基于HttpURLConnection构造时的静态followRedirects的值。
另请参见:
setInstanceFollowRedirects(boolean)
,
getInstanceFollowRedirects()
,
setFollowRedirects(boolean)
setAuthenticator
public void setAuthenticator(Authenticator auth)
提供
Authenticator
,以便在通过此协议的
HttpURLConnection
的HTTP协议进行身份验证时使用。
如果未提供验证器,则将使用
default authenticator
。
实现要求:
此方法的默认行为是无条件抛出
UnsupportedOperationException
。
的具体实现
HttpURLConnection
支持供给
Authenticator
特定
HttpURLConnection
实例应该重写此方法来实现不同的行为。
Implementation Note:
根据认证方案,实现可能需要也可能不需要使用提供的认证器来获取密码。
例如,如果将这些库配置为执行此操作,则依赖于第三方安全库的实现仍可以调用默认验证器。
同样,支持透明NTLM身份验证的实现可能会让系统在调用提供的身份验证器之前首先尝试使用系统用户凭据进行连接。
然而,如果具体提供的认证,则底层的连接可以仅针对重用
HttpURLConnection
实例共享同一
Authenticator
实例,认证信息,如果高速缓存,可以仅重新使用用于
HttpURLConnection
共享同一
Authenticator
。
auth
- 此
Authenticator
应使用的
HttpURLConnection
。
UnsupportedOperationException
- 如果底层实现不支持设置Authenticator。
IllegalStateException
- 如果已连接URLConnection。
NullPointerException
- 如果提供的
auth
是
null
。
从以下版本开始:
setFixedLengthStreamingMode
public void setFixedLengthStreamingMode(int contentLength)
当预先知道内容长度时,该方法用于在没有内部缓冲的情况下启用HTTP请求主体的流传输。
如果应用程序尝试写入的数据多于指示的内容长度,或者应用程序在写入指定的数量之前关闭OutputStream,则会引发异常。
启用输出流时,无法自动处理身份验证和重定向。
如果需要身份验证或重定向,则在读取响应时将抛出HttpRetryException。
可以查询此异常以获取错误的详细信息。
必须在连接URLConnection之前调用此方法。
注意:
建议使用
setFixedLengthStreamingMode(long)
而不是此方法,因为它允许设置更大的内容长度。
contentLength
- 将写入OutputStream的字节数。
IllegalStateException
- 如果已连接URLConnection或已启用其他流模式。
IllegalArgumentException
- 如果指定的内容长度小于零。
从以下版本开始:
另请参见:
setChunkedStreamingMode(int)
setFixedLengthStreamingMode
public void setFixedLengthStreamingMode(long contentLength)
当预先知道内容长度时,该方法用于在没有内部缓冲的情况下启用HTTP请求主体的流传输。
如果应用程序尝试写入的数据多于指示的内容长度,或者应用程序在写入指定的数量之前关闭OutputStream,则会引发异常。
启用输出流时,无法自动处理身份验证和重定向。
如果需要身份验证或重定向,则在读取响应时将抛出
HttpRetryException
。
可以查询此异常以获取错误的详细信息。
必须在连接URLConnection之前调用此方法。
通过调用此方法设置的内容长度优先于
setFixedLengthStreamingMode(int)
设置的任何值。
contentLength
- 将写入OutputStream的字节数。
IllegalStateException
- 如果已连接URLConnection或已启用其他流模式。
IllegalArgumentException
- 如果指定的内容长度小于零。
从以下版本开始:
setChunkedStreamingMode
public void setChunkedStreamingMode(int chunklen)
当预先
不
知道内容长度时,该方法用于在没有内部缓冲的情况下启用HTTP请求主体的流传输。
在此模式下,分块传输编码用于发送请求主体。
请注意,并非所有HTTP服务器都支持此模式。
启用输出流时,无法自动处理身份验证和重定向。
如果需要身份验证或重定向,则在读取响应时将抛出HttpRetryException。
可以查询此异常以获取错误的详细信息。
必须在连接URLConnection之前调用此方法。
chunklen
- 每个块中要写入的字节数。
如果chunklen小于或等于零,则将使用默认值。
IllegalStateException
- 如果已连接URLConnection或已启用其他流模式。
从以下版本开始:
另请参见:
setFixedLengthStreamingMode(int)
setFollowRedirects
public static void setFollowRedirects(boolean set)
设置此类是否应自动遵循HTTP重定向(响应代码为3xx的请求)。
默认为True。
小程序无法更改此变量。
如果有安全管理器,则此方法首先调用安全管理器的
checkSetFactory
方法以确保允许操作。
这可能会导致SecurityException。
set
-
boolean
指示是否遵循HTTP重定向。
SecurityException
- 如果存在安全管理器且其
checkSetFactory
方法不允许该操作。
另请参见:
SecurityManager.checkSetFactory()
,
getFollowRedirects()
setInstanceFollowRedirects
public void setInstanceFollowRedirects(boolean followRedirects)
设置此
HttpURLConnection
实例是否应自动遵循HTTP重定向(响应代码为3xx的请求)。
默认值来自followRedirects,默认为true。
followRedirects
-
boolean
指示是否遵循HTTP重定向。
从以下版本开始:
另请参见:
instanceFollowRedirects
,
getInstanceFollowRedirects()
如果连接失败但服务器仍发送有用数据,则返回错误流。
典型示例是当HTTP服务器以404响应时,这将导致在连接中抛出FileNotFoundException,但服务器发送了一个HTML帮助页面,其中包含有关如何操作的建议。
此方法不会导致启动连接。
如果未连接连接,或者连接时服务器没有错误,或者服务器出现错误但未发送错误数据,则此方法将返回null。
这是默认值。
错误流(如果有),如果没有错误,则为null,连接未连接或服务器未发送任何有用数据。