public abstract class URLConnection extends Object
URLConnection是所有课代表和一个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方法。设置参数被修改,使用以下方法:
setAllowUserInteractionsetDoInputsetDoOutputsetIfModifiedSincesetUseCaches和通用请求属性被修改使用该方法:
setRequestProperty为AllowUserInteraction和UseCaches参数的默认值可以设置使用的方法setDefaultAllowUserInteraction和setDefaultUseCaches。
上述set方法检索参数或通用请求属性值对应的get方法。适用的具体参数和一般要求属性是协议特定的。
使用以下方法来访问连接到远程对象后的头字段和内容:
getContentgetHeaderFieldgetInputStreamgetOutputStream某些头字段经常被访问。的方法:
getContentEncodinggetContentLengthgetContentTypegetDategetExpirationgetLastModifed为这些领域提供方便的访问。的getContentType方法由getContent方法用于确定远程对象的类型;子类可能会发现它方便地覆盖getContentType方法。
在常见的情况下,所有的预连接参数和一般请求属性可以被忽略:预连接参数和请求属性默认为明智的值。对于这个接口的大多数客户,只有两个有趣的方法:getInputStream和getContent,这是方便的方法URL类镜像。
在请求的属性和一个http连接头字段的更多信息,可以发现在:
调用http://www.ietf.org/rfc/rfc2616.txt
close()方法对一个
URLConnection的
InputStream或
OutputStream请求后可以免费网络资源与该实例相关的,除非特别指定不同的行为,其协议规范。
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
该网址代表了这个连接打开的万维网的远程对象。
|
protected boolean |
useCaches
如果
true,该协议允许使用缓存的时候可以。
|
| Modifier | Constructor and Description |
|---|---|
protected |
URLConnection(URL url)
构建一个与指定的网址的网址连接。
|
| Modifier and Type | Method and Description |
|---|---|
void |
addRequestProperty(String key, String value)
添加一个由一个键值对指定的通用请求属性。
|
abstract void |
connect()
打开一个通信链接到这个网址引用的资源,如果这样的连接还没有建立。
|
boolean |
getAllowUserInteraction()
返回的
allowUserInteraction场该对象的值。
|
int |
getConnectTimeout()
返回连接超时的设置。
|
Object |
getContent()
检索此网址连接的内容。
|
Object |
getContent(类[] classes)
检索此网址连接的内容。
|
String |
getContentEncoding()
返回的
content-encoding标头字段的值。
|
int |
getContentLength()
返回的
content-length标头字段的值。
|
long |
getContentLengthLong()
作为一个长期回报的
content-length标头字段的值。
|
String |
getContentType()
返回的
content-type标头字段的值。
|
long |
getDate()
返回的
date标头字段的值。
|
static boolean |
getDefaultAllowUserInteraction()
返回的
allowUserInteraction字段的默认值。
|
static String |
getDefaultRequestProperty(String key)
过时的。
具体的实例getrequestproperty方法应使用后得到URLConnection适当的实例。
|
boolean |
getDefaultUseCaches()
返回一个
URLConnection的
useCaches标志的默认值。
|
boolean |
getDoInput()
返回该
URLConnection的
doInput标志值。
|
boolean |
getDoOutput()
返回该
URLConnection的
doOutput标志值。
|
long |
getExpiration()
返回的
expires标头字段的值。
|
static FileNameMap |
getFileNameMap()
加载文件名Map(一mimetable)从一个数据文件。
|
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()
返回头字段的不可更改的Map。
|
long |
getIfModifiedSince()
返回该对象的
ifModifiedSince字段的值。
|
InputStream |
getInputStream()
返回从这个打开连接读取的输入流。
|
long |
getLastModified()
返回的
last-modified标头字段的值。
|
OutputStream |
getOutputStream()
返回写入此连接的输出流。
|
Permission |
getPermission()
返回表示表示要为该对象表示的连接的权限对象。
|
int |
getReadTimeout()
返回读取超时的设置。
|
Map<String,List<String>> |
getRequestProperties()
返回此连接的通用请求属性的一个不可修改的Map。
|
String |
getRequestProperty(String key)
返回此连接的已命名的通用请求属性的值。
|
URL |
getURL()
返回该
URLConnection的
URL字段的值。
|
boolean |
getUseCaches()
返回该
URLConnection的
useCaches字段的值。
|
static String |
guessContentTypeFromName(String fname)
试图根据某个网址的指定的“文件”组件来确定一个对象的内容类型。
|
static String |
guessContentTypeFromStream(InputStream is)
尝试根据输入流的开头的字符来确定输入流的类型。
|
void |
setAllowUserInteraction(boolean allowuserinteraction)
设置这个
URLConnection的
allowUserInteraction字段的值。
|
void |
setConnectTimeout(int timeout)
集以毫秒为单位指定的超时值,可当打开通信链接引用的URLConnection资源。
|
static void |
setContentHandlerFactory(ContentHandlerFactory fac)
设置应用程序的
ContentHandlerFactory。
|
static void |
setDefaultAllowUserInteraction(boolean defaultallowuserinteraction)
套的
allowUserInteraction场所有未来的
URLConnection对象指定值的默认值。
|
static void |
setDefaultRequestProperty(String key, String value)
过时的。
实例具体setRequestProperty方法应使用后得到URLConnection适当的实例。调用此方法将不会有任何效果。
|
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)
设置为指定的值这个
URLConnection的
ifModifiedSince字段的值。
|
void |
setReadTimeout(int timeout)
将读取超时设置为指定的超时时间,以毫秒为单位。
|
void |
setRequestProperty(String key, String value)
设置通用请求属性。
|
void |
setUseCaches(boolean usecaches)
设置为指定的值这个
URLConnection的
useCaches字段的值。
|
String |
toString()
返回一个
String表示这个URL连接。
|
protected URL url
此字段的值可以由getURL方法访问。
该变量的默认值是URL参数在URLConnection构造函数的值。
protected boolean doInput
setDoInput方法。它的价值是由
getDoInput方法返回。
一个可以用于输入和/或输出的网址连接。设置doInput旗true指示应用程序试图从URL连接读取数据。
此字段的默认值是true。
getDoInput(),
setDoInput(boolean)
protected boolean doOutput
setDoOutput方法。它的价值是由
getDoOutput方法返回。
一个可以用于输入和/或输出的网址连接。设置doOutput旗true指示应用程序将数据写入到URL连接。
此字段的默认值是false。
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表示),电话被忽略。
URLConnection对象经历两个阶段:首先创建它们,然后它们连接。被创建后,和之前被连接的各种选项可以指定(例如,doinput和UseCaches)。连接后,尝试设置它们是一个错误。操作,取决于被连接,像getcontentlength,将隐式执行的连接,如果必要的话。
SocketTimeoutException如果之前建立连接的超时
IOException如果I/O错误发生在打开连接。
connected,
getConnectTimeout(),
setConnectTimeout(int)
public void setConnectTimeout(int timeout)
这种方法的一些非标准实现可能会忽略指定的超时时间。看到连接超时设置,请getconnecttimeout()。
timeout -
int指定连接超时值以毫秒为单位
IllegalArgumentException如果timeout参数为负
getConnectTimeout(),
connect()
public int getConnectTimeout()
0返回意味着该选项是禁用的(即,超时的无穷大)。
int表示连接超时值以毫秒为单位
setConnectTimeout(int),
connect()
public void setReadTimeout(int timeout)
这种方法的一些非标准实现忽略了指定的超时时间。看读超时设置,请getreadtimeout()。
timeout -
int指定要用于毫秒超时值
IllegalArgumentException如果timeout参数为负
getReadTimeout(),
InputStream.read()
public int getReadTimeout()
int在毫秒指示读取超时值
setReadTimeout(int),
InputStream.read()
public int getContentLength()
content-length标头字段的值。
注:getContentLengthLong()应该优先于这种方法,因为它返回一个long相反,因此更便携。
-1如果内容长度是未知的,或如果内容长度大于integer.max_value。
public long getContentLengthLong()
content-length标头字段的值。
-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日格林威治时间的毫秒数
getHeaderField(java.lang.String)
public long getLastModified()
last-modified标头字段的值。结果是自1970年1月1日格林威治时间的毫秒数
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标头字段的关键。它返回
null如果少于
n+1领域。
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方法返回null,然后加载应用程序命名为类:
sun.net.www.content.<contentType>
在
<内容类型>
是以内容字符串类型的形成,与
period更换所有斜杠字符(“”),和所有其他非字母数字字符的
_下划线字符“”。字母数字字符的26个大写字母是“
A’到‘
Z ',26个小写字母的“
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。子类应重写此方法,并返回最佳表示要使一一连接到该网址的权限的权限。例如,一个
URLConnection代表
file: URL会返回一个
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连接输入设置doinput标志为true,false。默认是真的。
doinput -新价值。
IllegalStateException
doInput,
getDoInput()
public boolean getDoInput()
URLConnection的
doInput标志值。
URLConnection的
doInput标志值。
setDoInput(boolean)
public void setDoOutput(boolean dooutput)
doOutput领域这
URLConnection到指定的值。
一个可以用于输入和/或输出的网址连接。如果你打算使用URL连接输出设置dooutput标志为true,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)
allowUserInteraction场所有未来的
URLConnection对象指定值的默认值。
defaultallowuserinteraction -新价值。
getDefaultAllowUserInteraction()
public static boolean getDefaultAllowUserInteraction()
allowUserInteraction字段的默认值。
这是默认的“粘性”,是所有urlconnections静态部分。此标记适用于未来,所有以下urlconnections所创建的。
allowUserInteraction字段的默认值。
setDefaultAllowUserInteraction(boolean)
public void setUseCaches(boolean usecaches)
URLConnection的
useCaches字段的值。
一些协议做缓存的文件。偶尔,它是重要的是能够“隧道通过”,忽略高速缓存(例如,在浏览器中的“重新加载”按钮)。如果在一个连接的usecaches标志为true,连接被允许使用它可以任何缓存。如果是错误的,高速缓存是被忽略的。默认值是从defaultusecaches,真正违约。
usecaches -
boolean指示是否允许缓存
IllegalStateException
getUseCaches()
public boolean getUseCaches()
URLConnection的
useCaches字段的值。
URLConnection的
useCaches字段的值。
setUseCaches(boolean)
public void setIfModifiedSince(long ifmodifiedsince)
URLConnection的
ifModifiedSince字段的值。
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 -价值与它相关联的。
IllegalStateException
NullPointerException如果关键是
null
getRequestProperty(java.lang.String)
public void addRequestProperty(String key, String value)
key -关键字的请求是已知的(例如,“
Accept”)。
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与键关联的值。
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实例是用来从一个内容类型构建一个内容处理程序
如果存在安全管理器,该方法首先调用安全管理器的checkSetFactory方法确保操作是允许的。这可能导致SecurityException。
fac -所需的工厂。
Error -如果工厂已被定义。
SecurityException -如果存在一个安全管理及其
checkSetFactory方法不允许操作。
ContentHandlerFactory,
getContent(),
SecurityManager.checkSetFactory()
public static String guessContentTypeFromName(String fname)
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.