public abstract class URLConnection extends Object
URLConnection是表示应用程序和URL之间的通信链接的所有类的超类。
该类的实例可以用于从URL引用的资源中读取和写入。
通常,创建与URL的连接是一个多步骤过程:
openConnection() connect() Manipulate parameters that affect the connection to the remote resource. Interact with the resource; query header fields and contents.
openConnection方法创建连接对象。 connect方法实现与远程对象的实际连接。 使用以下方法修改设置参数:
setAllowUserInteraction setDoInput setDoOutput setIfModifiedSince setUseCaches 并且使用以下方法修改一般请求属性:
setRequestProperty 可以使用方法setDefaultAllowUserInteraction和setDefaultUseCaches设置AllowUserInteraction和UseCaches参数的默认值。
上述set方法中的每一个都具有相应的get方法来检索参数或一般请求属性的值。 适用的具体参数和一般请求属性是特定于协议的。
使用以下方法访问头域和连接远程对象后的内容:
getContent getHeaderField getInputStream getOutputStream 某些头字段经常被访问。 方法:
getContentEncoding getContentLength getContentType getDate getExpiration getLastModifed 提供方便的访问这些领域。 getContentType方法由getContent方法用于确定远程对象的类型; 子类可能会方便地覆盖getContentType方法。
在常见情况下,所有预连接参数和一般请求属性都可以忽略:预连接参数和请求属性默认为明智的值。 对于这个界面的大多数客户端,只有两个有趣的方法: getInputStream和getContent ,它们通过方便的方法镜像在URL类中。
在请求属性和报头字段的更多信息http连接可以被发现在:
调用http://www.ietf.org/rfc/rfc2616.txt
close()上方法InputStream或OutputStream一个的URLConnection的请求后,可能释放与此实例相关联的网络资源,除非特定的协议规范为其指定不同的行为。
URL.openConnection() ,
connect() ,
getContent() ,
getContentEncoding() ,
getContentLength() ,
getContentType() ,
getDate() ,
getExpiration() ,
getHeaderField(int) ,
getHeaderField(java.lang.String) ,
getInputStream() ,
getLastModified() ,
getOutputStream() ,
setAllowUserInteraction(boolean) ,
setDefaultUseCaches(boolean) ,
setDoInput(boolean) ,
setDoOutput(boolean) ,
setIfModifiedSince(long) ,
setRequestProperty(java.lang.String, java.lang.String) ,
setUseCaches(boolean)
| Modifier and Type | Field and Description |
|---|---|
protected boolean |
allowUserInteraction
如果
true ,则在上下文中检查该
URL ,其中允许用户交互(例如弹出认证对话)是有意义的。
|
protected boolean |
connected
如果
false ,此连接对象尚未创建指定URL的通信链接。
|
protected boolean |
doInput
该变量由
setDoInput方法设置。
|
protected boolean |
doOutput
该变量由
setDoOutput方法设置。
|
protected long |
ifModifiedSince
某些协议支持跳过对象的提取,除非对象在某个时间以前已被更新。
|
protected URL |
url
URL表示打开此连接的万维网上的远程对象。
|
protected boolean |
useCaches
如果
true ,协议允许使用缓存,只要它可以。
|
| Modifier | Constructor and Description |
|---|---|
protected |
URLConnection(URL url)
构造与指定URL的URL连接。
|
| Modifier and Type | Method and Description |
|---|---|
void |
addRequestProperty(String key, String value)
添加由键值对指定的一般请求属性。
|
abstract void |
connect()
打开与此URL引用的资源的通信链接,如果此类连接尚未建立。
|
boolean |
getAllowUserInteraction()
返回此对象的
allowUserInteraction字段的值。
|
int |
getConnectTimeout()
返回连接超时的设置。
|
Object |
getContent()
检索此URL连接的内容。
|
Object |
getContent(类[] classes)
检索此URL连接的内容。
|
String |
getContentEncoding()
返回
content-encoding标题字段的值。
|
int |
getContentLength()
返回
content-length标题字段的值。
|
long |
getContentLengthLong()
返回
content-length标头字段的值为long。
|
String |
getContentType()
返回
content-type标题字段的值。
|
long |
getDate()
返回
date标题字段的值。
|
static boolean |
getDefaultAllowUserInteraction()
返回
allowUserInteraction字段的默认值。
|
static String |
getDefaultRequestProperty(String key)
已弃用
在获得适当的URLConnection实例之后,应该使用实例特定的getRequestProperty方法。
|
boolean |
getDefaultUseCaches()
返回默认值为
URLConnection的
useCaches标志。
|
boolean |
getDoInput()
返回此
URLConnection的
doInput标志的值。
|
boolean |
getDoOutput()
返回此
URLConnection的
doOutput标志的值。
|
long |
getExpiration()
返回
expires标题字段的值。
|
static FileNameMap |
getFileNameMap()
从数据文件加载文件名映射(模拟)。
|
String |
getHeaderField(int n)
返回的值
n
th头字段。
|
String |
getHeaderField(String name)
返回命名头字段的值。
|
long |
getHeaderFieldDate(String name, long Default)
返回以日期解析的命名字段的值。
|
int |
getHeaderFieldInt(String name, int Default)
返回被解析为命名字段的值。
|
String |
getHeaderFieldKey(int n)
返回的关键
n
th头字段。
|
long |
getHeaderFieldLong(String name, long Default)
返回被解析为命名字段的值。
|
Map<String,List<String>> |
getHeaderFields()
返回不可修改的标题字段的映射。
|
long |
getIfModifiedSince()
返回此对象的
ifModifiedSince字段的值。
|
InputStream |
getInputStream()
返回从此打开的连接读取的输入流。
|
long |
getLastModified()
返回
last-modified标题字段的值。
|
OutputStream |
getOutputStream()
返回写入此连接的输出流。
|
Permission |
getPermission()
返回一个权限对象,该对象表示创建此对象所表示的连接所需的权限。
|
int |
getReadTimeout()
返回读取超时的设置。
|
Map<String,List<String>> |
getRequestProperties()
返回此连接的一般请求属性的不可修改映射。
|
String |
getRequestProperty(String key)
返回此连接的命名的常规请求属性的值。
|
URL |
getURL()
返回此
URLConnection的
URL字段的值。
|
boolean |
getUseCaches()
返回此
URLConnection的
useCaches字段的值。
|
static String |
guessContentTypeFromName(String fname)
根据URL的指定“文件”组件,尝试确定对象的内容类型。
|
static String |
guessContentTypeFromStream(InputStream is)
根据输入流开头的字符,尝试确定输入流的类型。
|
void |
setAllowUserInteraction(boolean allowuserinteraction)
设置这个
URLConnection的
allowUserInteraction字段的值。
|
void |
setConnectTimeout(int timeout)
设置打开与此URLConnection引用的资源的通信链接时使用的指定超时值(以毫秒为单位)。
|
static void |
setContentHandlerFactory(ContentHandlerFactory fac)
设置应用
ContentHandlerFactory的ContentHandlerFactory。
|
static void |
setDefaultAllowUserInteraction(boolean defaultallowuserinteraction)
将所有将来的
URLConnection对象的
allowUserInteraction字段的默认值设置为指定的值。
|
static void |
setDefaultRequestProperty(String key, String value)
已弃用
在获得适当的URLConnection实例之后,应该使用实例特定的setRequestProperty方法。
调用此方法将不起作用。
|
void |
setDefaultUseCaches(boolean defaultusecaches)
将
useCaches字段的默认值设置为指定值。
|
void |
setDoInput(boolean doinput)
设置的值
doInput领域本
URLConnection指定值。
|
void |
setDoOutput(boolean dooutput)
设置的值
doOutput领域本
URLConnection指定值。
|
static void |
setFileNameMap(FileNameMap map)
设置FileNameMap。
|
void |
setIfModifiedSince(long ifmodifiedsince)
设置的值
ifModifiedSince这个领域
URLConnection到指定值。
|
void |
setReadTimeout(int timeout)
将读取超时设置为指定的超时时间,以毫秒为单位。
|
void |
setRequestProperty(String key, String value)
设置一般请求属性。
|
void |
setUseCaches(boolean usecaches)
设置的值
useCaches这个领域
URLConnection到指定值。
|
String |
toString()
返回
String此URL连接的表示。
|
protected URL url
该字段的值可以通过getURL方法访问。
该变量的默认值是URLConnection构造函数中的URL参数的值。
protected boolean doInput
setDoInput方法设置。
其值由getDoInput方法返回。
URL连接可用于输入和/或输出。 将doInput标志设置为true表示应用程序打算从URL连接读取数据。
该字段的默认值为true 。
getDoInput() ,
setDoInput(boolean)
protected boolean doOutput
setDoOutput方法设置。
其值由getDoOutput方法返回。
URL连接可用于输入和/或输出。 将doOutput标志设置为true表示应用程序打算将数据写入URL连接。
该字段的默认值为false 。
getDoOutput() ,
setDoOutput(boolean)
protected boolean allowUserInteraction
true ,则在上下文中检查该URL ,其中允许用户交互(例如弹出认证对话)是有意义的。
如果false ,则不允许用户交互。
该字段的值可以通过setAllowUserInteraction方法设置。 其值由getAllowUserInteraction方法返回。 其默认值是上次调用setDefaultAllowUserInteraction方法中参数的值。
protected boolean useCaches
true ,协议被允许使用缓存,只要它可以。
如果false ,协议必须始终尝试获取对象的新副本。
该字段由setUseCaches方法设置。 其值由getUseCaches方法返回。
其默认值是上次调用setDefaultUseCaches方法中给出的值。
protected long ifModifiedSince
非零值给出了1970年1月1日GMT之后的毫秒数。 该对象只有在最近被修改的时间才被提取。
该变量由setIfModifiedSince方法设置。 它的值由getIfModifiedSince返回。
该字段的默认值为0 ,表示必须始终发生提取。
protected boolean connected
false ,此连接对象尚未创建指定URL的通信链接。
如果true ,通信链路已建立。
protected URLConnection(URL url)
url - 指定的URL。
public static FileNameMap getFileNameMap()
setFileNameMap(java.net.FileNameMap)
public static void setFileNameMap(FileNameMap map)
如果有安全管理员,则该方法首先调用安全管理器的checkSetFactory方法,以确保允许操作。 这可能会导致SecurityException。
map - 要设置的FileNameMap
SecurityException - 如果安全管理器存在,并且其
checkSetFactory方法不允许操作。
SecurityManager.checkSetFactory() ,
getFileNameMap()
public abstract void connect()
throws IOException
如果connect已经打开( connected字段的值为true )调用了true ,则会忽略该调用。
URLConnection对象经历两个阶段:首先创建它们,然后它们被连接。 在创建之后,在连接之前,可以指定各种选项(例如doInput和UseCaches)。 连接后,尝试设置它们是一个错误。 依赖于连接的操作(如getContentLength)将在必要时隐式执行连接。
SocketTimeoutException - 如果超时连接可以建立之前超时
IOException - 如果在打开连接时发生I / O错误。
connected ,
getConnectTimeout() ,
setConnectTimeout(int)
public void setConnectTimeout(int timeout)
这种方法的一些非标准实现可能会忽略指定的超时。 要查看连接超时设置,请调用getConnectTimeout()。
timeout - 一个
int ,以
int为单位指定连接超时值
IllegalArgumentException - 如果超时参数为负
getConnectTimeout() ,
connect()
public int getConnectTimeout()
0返回意味着该选项被禁用(即无限超时)。
int ,表示连接超时值(以毫秒为单位)
setConnectTimeout(int) ,
connect()
public void setReadTimeout(int timeout)
此方法的一些非标准实现忽略指定的超时。 要查看读取超时集,请调用getReadTimeout()。
timeout - 一个
int ,指定要以
int为单位的超时值
IllegalArgumentException - 如果timeout参数为负
getReadTimeout() ,
InputStream.read()
public int getReadTimeout()
int ,以
int为单位表示读取超时值
setReadTimeout(int) ,
InputStream.read()
public int getContentLength()
content-length标题字段的值。
注意 : getContentLengthLong()应优先于此方法,因为它返回一个long ,因此更便于携带。
-1如果内容长度未知,或者如果内容长度大于Integer.MAX_VALUE。
public long getContentLengthLong()
content-length标题字段的值为long。
-1 。
public String getContentType()
content-type标题字段的值。
null 。
getHeaderField(java.lang.String)
public String getContentEncoding()
content-encoding标题字段的值。
null 。
getHeaderField(java.lang.String)
public long getExpiration()
expires标题字段的值。
getHeaderField(java.lang.String)
public long getDate()
date标题字段的值。
0 。
返回的值是自1970年1月1日GMT以来的毫秒数。
getHeaderField(java.lang.String)
public long getLastModified()
last-modified标题字段的值。
结果是自1970年1月1日GMT以来的毫秒数。
URLConnection的资源的上次修改日期,如果未知,则为0。
getHeaderField(java.lang.String)
public String getHeaderField(String name)
如果对可能不同的值多次设置相同标题的连接进行调用,则只返回最后一个值。
name - 标题字段的名称。
null 。
public Map<String,List<String>> getHeaderFields()
public int getHeaderFieldInt(String name, int Default)
存在这种形式的getHeaderField ,因为某些连接类型(例如, http-ng )具有预分析头。 该连接类型的类可以覆盖此方法并使解析短路。
name - 标题字段的名称。
Default - 默认值。
Default值。
public long getHeaderFieldLong(String name, long Default)
存在这种形式的getHeaderField ,因为某些连接类型(例如, http-ng )具有预分析头。 该连接类型的类可以覆盖此方法并使解析短路。
name - 标题字段的名称。
Default - 默认值。
Default值。
public long getHeaderFieldDate(String name, long Default)
存在这种形式的getHeaderField ,因为某些连接类型(例如, http-ng )具有预分析头。 该连接类型的类可以覆盖此方法并使解析短路。
name - 标题字段的名称。
Default - 默认值。
Default参数的值。
public String getHeaderFieldKey(int n)
n th头字段。
如果少于n+1字段,则返回null 。
n - 一个索引,其中
n>=0
n
th头字段,或
null如果有不是较少
n+1字段。
public String getHeaderField(int n)
n - 一个索引,其中
n>=0
n
th头字段或
null如果存在少于
n+1字段
getHeaderFieldKey(int)
public Object getContent() throws IOException
该方法首先通过调用getContentType方法来确定对象的内容类型。 如果这是应用程序第一次看到特定内容类型,则会创建该内容类型的内容处理程序:
setContentHandlerFactory方法设置了一个内容处理程序工厂实例,则createContentHandler该实例的createContentHandler方法作为参数; 结果是该内容类型的内容处理程序。 createContentHandler方法返回null ,则应用程序加载名为
sun.net.www.content.<contentType>
其中< contentType >是通过获取内容类型的字符串,用period ('。')替换所有斜杠字符,以及所有其他非字母数字字符与下划线字符' _ '。 字母数字字符具体是26个大写ASCII字母' A '至' Z ',26个小写ASCII字母' a '至' z ',以及10个ASCII数字' 0 '至' 9 '。 如果指定的类不存在,或者不是ContentHandler的子类,则抛出一个UnknownServiceException 。 instanceof操作符来确定返回的对象的具体类型。
IOException - 如果在获取内容时发生I / O错误。
UnknownServiceException - 如果协议不支持内容类型。
ContentHandlerFactory.createContentHandler(java.lang.String) ,
getContentType() ,
setContentHandlerFactory(java.net.ContentHandlerFactory)
public Object getContent(类[] classes) throws IOException
classes - 指示所请求类型的
类数组
instanceof操作符来确定返回的对象的具体类型。
IOException - 如果在获取内容时发生I / O错误。
UnknownServiceException - 如果协议不支持内容类型。
getContent() ,
ContentHandlerFactory.createContentHandler(java.lang.String) ,
getContent(java.lang.Class[]) ,
setContentHandlerFactory(java.net.ContentHandlerFactory)
public Permission getPermission() throws IOException
java.security.AllPermission 。
子类应该覆盖此方法,并返回最能代表连接到URL所需的权限的权限。
例如, URLConnection file: URL的file:将返回一个java.io.FilePermission对象。
返回的权限可能取决于连接的状态。 例如,连接前的许可可能与连接后的许可不同。 例如,HTTP服务器(如foo.com)可能将连接重定向到不同的主机,例如bar.com。 连接之前连接权限将代表连接到foo.com所需的权限,连接后返回的权限将是bar.com。
权限通常用于两个目的:保护通过URLConnections获取的对象的缓存,并检查收件人了解特定URL的权限。 在第一种情况下,在获得对象后应该获得许可。 例如,在HTTP连接中,这将表示连接到最终获取数据的主机的权限。 在第二种情况下,应在连接前获得并测试许可。
IOException - 如果权限的计算需要网络或文件I / O,并在计算异常时发生异常。
public InputStream getInputStream() throws IOException
IOException - 如果在创建输入流时发生I / O错误。
UnknownServiceException - 如果协议不支持输入。
setReadTimeout(int) ,
getReadTimeout()
public OutputStream getOutputStream() throws IOException
IOException - 如果在创建输出流时发生I / O错误。
UnknownServiceException - 如果协议不支持输出。
public String toString()
String此URL连接的表示。
public void setDoInput(boolean doinput)
doInput领域本URLConnection指定值。
URL连接可用于输入和/或输出。 如果您打算使用URL连接进行输入,请将DoInput标志设置为true,否则返回false。 默认值为true。
doinput - 新值。
IllegalStateException - 如果已经连接
doInput ,
getDoInput()
public boolean getDoInput()
URLConnection的
doInput标志的值。
URLConnection的
doInput标志。
setDoInput(boolean)
public void setDoOutput(boolean dooutput)
doOutput领域本URLConnection指定值。
URL连接可用于输入和/或输出。 如果您打算使用URL连接输出,请将DoOutput标志设置为true,否则返回false。 默认值为false。
dooutput - 新值。
IllegalStateException - 如果已经连接
getDoOutput()
public boolean getDoOutput()
URLConnection的
doOutput标志的值。
URLConnection的
doOutput旗。
setDoOutput(boolean)
public void setAllowUserInteraction(boolean allowuserinteraction)
URLConnection的
allowUserInteraction字段的值。
allowuserinteraction - 新值。
IllegalStateException - 如果已经连接
getAllowUserInteraction()
public boolean getAllowUserInteraction()
allowUserInteraction字段的值。
allowUserInteraction字段的值。
setAllowUserInteraction(boolean)
public static void setDefaultAllowUserInteraction(boolean defaultallowuserinteraction)
URLConnection对象的
allowUserInteraction字段的默认值设置为指定的值。
defaultallowuserinteraction - 新值。
getDefaultAllowUserInteraction()
public static boolean getDefaultAllowUserInteraction()
allowUserInteraction字段的默认值。
默认是“粘性”,是所有URLConnections的静态状态的一部分。 此标志适用于下一个,以及创建的所有以下URLConnections。
allowUserInteraction字段。
setDefaultAllowUserInteraction(boolean)
public void setUseCaches(boolean usecaches)
useCaches这个领域URLConnection到指定值。
一些协议执行缓存文档。 偶尔,重要的是能够“通过”并忽略高速缓存(例如浏览器中的“重新加载”按钮)。 如果连接上的UseCaches标志为true,则允许连接使用任何可以缓存的缓存。 如果是false,缓存将被忽略。 默认值来自DefaultUseCaches,默认值为true。
usecaches -一个
boolean指示是否允许缓存
IllegalStateException - 如果已经连接
getUseCaches()
public boolean getUseCaches()
URLConnection的
useCaches字段的值。
URLConnection的
useCaches字段。
setUseCaches(boolean)
public void setIfModifiedSince(long ifmodifiedsince)
ifModifiedSince这个领域
URLConnection到指定值。
ifmodifiedsince - 新值。
IllegalStateException - 如果已经连接
getIfModifiedSince()
public long getIfModifiedSince()
ifModifiedSince字段的值。
ifModifiedSince字段。
setIfModifiedSince(long)
public boolean getDefaultUseCaches()
URLConnection的useCaches标志。
默认是“粘性”,是所有URLConnections的静态状态的一部分。 此标志适用于下一个,以及创建的所有以下URLConnections。
URLConnection的
useCaches标志。
setDefaultUseCaches(boolean)
public void setDefaultUseCaches(boolean defaultusecaches)
useCaches字段的默认值设置为指定值。
defaultusecaches - 新的价值。
getDefaultUseCaches()
public void setRequestProperty(String key, String value)
注意:HTTP需要所有请求属性,它们可以合法地使用相同键的多个实例来使用逗号分隔的列表语法,这样可以将多个属性附加到单个属性中。
key - 请求已知的关键字(例如,“
Accept ”)。
value -
value的值。
IllegalStateException - 如果已经连接
NullPointerException - 如果键是
null
getRequestProperty(java.lang.String)
public void addRequestProperty(String key, String value)
key - 请求已知的关键字(例如,“
Accept ”)。
value -
value的值。
IllegalStateException - 如果已连接
NullPointerException - 如果键为空
getRequestProperties()
public String getRequestProperty(String key)
key - 请求已知的关键字(例如,“接受”)。
IllegalStateException - 如果已经连接
setRequestProperty(java.lang.String, java.lang.String)
public Map<String,List<String>> getRequestProperties()
IllegalStateException - 如果已经连接
@Deprecated public static void setDefaultRequestProperty(String key, String value)
URLConnection时,将使用这些属性进行初始化。
key - 请求已知的关键字(例如,“
Accept ”)。
value - 与密钥相关
value的值。
setRequestProperty(java.lang.String,java.lang.String) ,
getDefaultRequestProperty(java.lang.String)
@Deprecated public static String getDefaultRequestProperty(String key)
key - 请求已知的关键字(例如,“接受”)。
getRequestProperty(java.lang.String) ,
setDefaultRequestProperty(java.lang.String, java.lang.String)
public static void setContentHandlerFactory(ContentHandlerFactory fac)
ContentHandlerFactory的ContentHandlerFactory。
应用程序最多可以调用一次。
ContentHandlerFactory实例用于从内容类型构造内容处理程序
如果有安全管理员,则该方法首先调用安全管理员的checkSetFactory方法,以确保允许操作。 这可能会导致SecurityException。
fac - 所需工厂。
Error - 如果工厂已经定义。
SecurityException - 如果安全管理器存在,并且其
checkSetFactory方法不允许操作。
ContentHandlerFactory , getContent() , SecurityManager.checkSetFactory()
public static String guessContentTypeFromName(String fname)
getContentType方法的getContentType使用的getContentType方法。
fname - 文件名。
getContentType()
public static String guessContentTypeFromStream(InputStream is) throws IOException
getContentType方法的子类使用。
理想情况下,不需要这个程序。 但是很多http服务器返回不正确的内容类型; 此外,还有许多非标准扩展。 直接检查字节以确定内容类型通常比相信http服务器所声称的内容类型更准确。
is - 支持标记的输入流。
null如果无法确定。
IOException - 如果在读取输入流时发生I / O错误。
InputStream.mark(int) ,
InputStream.markSupported() ,
getContentType()
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.