java.lang.Object | +----java.net.URLConnection
抽象类 URLConnection 是所有表示应用程序与 URL 之间通信链路的类的超类。该类的实例可以用来对由 URL 引用的资源进行读取和写入操作。一般情况下,生成一个对 URL 的连接是一多步过程:
openConnection() |
connect() |
|---|---|
| 影响对远程资源连接的操纵参数。 | 与资源的交互:查询头文件域和内容。 |
openConnection 方法产生一连接对象。 connect
方法,实现对远程对象的实际连接。
通过如下的方法修改设置参数:
- setAllowUserInteraction
- setDoInput
- setDoOutput
- setIfModifiedSince
- setUseCaches
通过使用如下的方法修改一般请求属性:
- setRequestProperty
AllowUserInteraction 和 UseCaches 参数的缺省值可以通过使用
setDefaultAllowUserInteraction 和 setDefaultUseCaches 方法来设置。 而一般请求属性的缺省值可以通过方法 setDefaultRequestProperty 来设置 。
上面的每个 set 方法都有相应 get 方法来获取参数和一般请求属性的值。可用的特定参数和一般请求属性是特定于协议的。
对远程对象的连接完成后,用下列方法访问报头域和内容:
- getContent
- getHeaderField
- getInputStream
- getOutputStream
确认报头域能够被频繁访问。方法:
- getContentEncoding
- getContentLength
- getContentType
- getDate
- getExpiration
- getLastModified
提供对这些域的便利访问。
getContentType 方法由 getContent 方法调用以确定远程对象的类型;
子类来覆盖方法 getContentType 可能是有利的。
在通常的情况下,所有的连接前参数和一般请求属性都可以忽略:系统为它们预置合理的值。对大多数该接口的客户机来说,只对两个方法感兴趣:getInputStream 和 getObject,一些便捷方法把它们在 URL 类中作了映象。
关于http 连接的有关请求属性和报头域的进一步信息可以在如下站点查阅:
http://www.w3.org/hypertext/WWW/Protocols/HTTP1.0/draft-ietf-http-spec.html
true,则该 URL 在允许用户交互的环境里进行检查,这些交互包括弹出一确认对话框。 false ,则该连接对象没有生成对指定 URL 的通信链路。 setDoInput 设置。
setDoOutput 设置。
true ,则允许该协议在任何时侯使用高速缓存。
allowUserInteraction 域的值。
content-encoding 的报头域的值。
content-length 的报头域的值。
content-type 的报头域的值。
date 的报头域的值。
allowUserInteraction 域的缺省值。
URLConnection 的 useCaches 标志的缺省值。URLConnection 的 doInput 标志的值。URLConnection 的 doOutput 标志的值。
expires 的报头域的值。
nth 个报头域的值。nth 个报头域的关键字。
ifModifiedSince 域的值。
last-modified 报头域的值。
URLConnection 的 URL 值。
URLConnection 的 useCaches 域的值。
URLConnection 的
allowUserInteraction 域的值。
ContentHandlerFactory 。
URLConnection 对象的
allowUserInteraction 域的缺省值。
useCaches 域的缺省值为指定值。
URLConnection 的 doInput 域为指定值。URLConnection 的 doInput 域为指定值。
URLConnection 的
ifModifiedSince 域为指定的值。URLConnection 的 useCaches 域为指定值。String 表示。protected URL url
该域的值可以由 getURL 方法访问。
该变量的缺省值是 URLConnection 构造子中 URL 参数的值。
protected boolean doInput
setDoInput 设置。 由 getDoInput 方法返回它的值。
URL 连接可以用于输入和(或)输出。 设置 doInput 标志为
true,表明应用程序试图从该 URL 连接读取数据。
该字段的缺省值为true。
protected boolean doOutput
setDoOutput 设置。 由 getDoInput 方法返回它的值。
URL 连接可以用于输入和(或)输出。 设置 doOutput 标志为
true ,表明应用程序试图往该 URL 连接写入数据。
该字段的缺省值为 false。
protected boolean allowUserInteraction
true,则该 URL 在允许用户交互的环境里进行检查,这些交互只弹出一确认对话框等。若为 false,则不允许用户交互。
该域的值可以由 setAllowUserInteraction 方法设置。由 getAllowUserInteraction 方法返回它的值。
它的缺省值为 setDefaultAllowUserInteraction 方法最后一次调用的参数值。
protected boolean useCaches
true ,则允许该协议在任何时侯使用高速缓存。
若为 false,协议必须尝试去获得对象的新拷贝。
该域由方法 setUseCaches 设置。 由 getUseCaches 方法返回它的值。
它的缺省值为 setDefaultUseCaches 方法最后一次调用时给出的值。
protected long ifModifiedSince
一个非零值给出一个从 January 1, 1970, GMT 起以秒表示的时间。 对象只有在该时间之后修改才装入。
该变量由方法 setIfModifiedSince 设置。 由 getIfModifiedSince 方法返回它的值。
该域的缺省值为 0。
protected boolean connected
false ,则表示该连接对象没有生成对指定 URL 的通信链路 。 若为 true ,则表示通信链路已经建立。
protected URLConnection(URL url)
public static FileNameMap getFileNameMap()
public static void setFileNameMap(FileNameMap map)
public abstract void connect() throws IOException
如果方法 connect 调用时连接已经打开
(由 connected 域为 true 标识),则忽略该调用。
URLConnection 对象经历两个阶段:首先它们被生成,然后被连接。 在生成后和连接这段时间里,可以指定不同的选项 (比如:doInput 和 UseCaches)。如果连接后再试图设置它们就会出错。 依赖于连接的操作,如 getContentLength,如果必要的话,将隐式地执行连接。
public URL getURL()
URLConnection 的 URL 值。
URLConnection 的 URL 域的值。
public int getContentLength()
content-length 报头域的值。
-1。public String getContentType()
content-type 报头域的值。
null 。 public String getContentEncoding()
content-encoding 报头域的值。
null。
public long getExpiration()
expires 的报头域的值。
public long getDate()
date 报头域的值。
0 。 返回的值是从 January 1, 1970 GMT 起的秒数。
public long getLastModified()
last-modified 报头域的值。
结果为从 January 1, 1970 GMT 起的计秒数。
URLConnection 引用的资源的最后修改日期,若未知则为 0 。 public String getHeaderField(String name)
null。
public int getHeaderFieldInt(String name,
int Default)
getHeaderField格式是存在的,因为一些连接类型 (比如
http-ng) 有预分析报头。
此连接类型的类可以覆盖该方法并且使分析短路。
Default 值。
public long getHeaderFieldDate(String name,
long Default)
getHeaderField 格式是存在的,因为一些连接类
(比如 http-ng) 有预分析报头。
此连接类型的类可以覆盖该方法并且使分析短路。
Default 参数的值。
public String getHeaderFieldKey(int n)
nth 个报头域的关键字。
nth 个报头域的关键字,若域数少于 n 个,则返回 null。public String getHeaderField(int n)
nth 个报头域的值。
若域数少于 n 个,则返回 null。
该方法可以与方法 getHeaderFieldKey 联用来获取消息头部的所有信息。
nth 个报头域的值。 public Object getContent() throws IOException
该方法首先通过调用方法 getContentType 来确定对象的内容类型。
如果应用程序第一次见到该指定的内容类型,将生成此内容类型的内容处理程序。
setContentHandlerFactory 方法已建立内容处理程序实例,则以该内容类型为参数调用该实例的 createContentHandler
方法;返回结果为该内容类型的内容处理程序。
createContentHandler 方法返回值为 null ,则应用程序装入类:
sun.net.www.content.<contentType>
period ('.') ,把所有其它的非字母数字添加下划线字符 '_'。字母数字字符是指 26 个大写 ASCII 字母
'A' 到 'Z', 26 个小写 ASCII 字母 'a' 到 'z',和 10 个 ASCII
数字 '0' 到 '9'。 如果指定的类不存在,
或者不是 ContentHandler 类的子类,则抛出 UnknownServiceException 。
instanceOf 操作来确定返回对象的特定种类。 public InputStream getInputStream() throws IOException
public OutputStream getOutputStream() throws IOException
public String toString()
String 表示。
URLConnection 的字符串表示。
public void setDoInput(boolean doinput)
URLConnection 的 doInput 域为指定的值。
URL 连接可以用于输入和(或)输出。 如果想使用 URL 连接输入,则设置 DoInput 标志为 true ,否则为 false 。 缺省值为 true 除非 DoOutput 显式地设为 true ,否则在此情况下缺省值为 false 。
public boolean getDoInput()
URLConnection 的 doInput 标志的值。
URLConnection 的 doInput 标志的值。
public void setDoOutput(boolean dooutput)
URLConnection 的 doInput 域为指定的值。 URL 连接可以用于输入和(或)输出。 如果想使用 URL 连接输出,则设置 DoOutput 标志为 true ,否则为 false 。 缺省值为 false 。
public boolean getDoOutput()
URLConnection 的 doOutput 标志的值。
URLConnection 的 doOutput 标志的值。
public void setAllowUserInteraction(boolean allowuserinteraction)
URLConnection 的
allowUserInteraction 域的值。
public boolean getAllowUserInteraction()
allowUserInteraction 域的值。
allowUserInteraction 域的值。
public static void setDefaultAllowUserInteraction(boolean defaultallowuserinteraction)
URLConnection 对象的
allowUserInteraction 域的缺省值。
public static boolean getDefaultAllowUserInteraction()
allowUserInteraction 域的缺省值。
缺省值为 “sticky”,是所有 URLConnections 静态状态的一部分。 该标志适用于下一个和所有随后生成的 URLConnections 。
allowUserInteraction 域的缺省值。
public void setUseCaches(boolean usecaches)
URLConnection 的 useCaches 域为指定的值。
一些协议可以高速缓存文档。有时,使用“tunnel through”并忽略高速缓冲是很重要的(比如浏览器中的“reload” 按钮)。 如果连接的 UseCaches 标志为真,则允许该连接任意使用高速缓存。 若为假,则忽略高速缓存。缺省值来自 DefaultUseCaches,其缺省值为 true 。
public boolean getUseCaches()
URLConnection 的 useCaches 域的值。
URLConnection 的 useCaches 域的值。
public void setIfModifiedSince(long ifmodifiedsince)
URLConnection 的
ifModifiedSince 域为指定值。
public long getIfModifiedSince()
ifModifiedSince 域的值。
ifModifiedSince 域的值。
public boolean getDefaultUseCaches()
URLConnection 的 useCaches 标志的缺省值。
缺省值为 “sticky”,它是所有 URLConnections 静态状态的一部分。该标志适用于下一个和所有随后生成的 URLConnections 。
URLConnection 的 useCaches 标志的缺省值。
public void setDefaultUseCaches(boolean defaultusecaches)
useCaches 域的缺省值为指定值。
public void setRequestProperty(String key,
String value)
accept”)。
public String getRequestProperty(String key)
public static void setDefaultRequestProperty(String key,
String value)
URLConnection
时,由这些属性进行初始化。
accept”)。
public static String getDefaultRequestProperty(String key)
public static synchronized void setContentHandlerFactory(ContentHandlerFactory fac)
ContentHandlerFactory 。 它最多只能被应用程序调用一次。
该 ContentHandlerFactory 实例用来构造一内容类型的内容处理程序。
protected static String guessContentTypeFromName(String fname)
getContentType 方法。
public static String guessContentTypeFromStream(InputStream is) throws IOException
getContentType 方法的子类使用。
理想情况下并不需要该例行程序。但是许多 http 服务器返回不正确的内容类型;并且存在许多非标准的扩充。直接检查字节来确定内容类型通常比 http 服务器宣称的内容类型更准确。
null 。