[英]How to check if URLConnection is already in connected state?
我想检查Java中URLConnection的连接状态。
我想编写一个toString(URLConnection)
方法来打印连接的所有标头数据(请求和响应)。
但是toString()
方法仅应在建立连接后才打印响应数据!
这里的问题是,一旦调用了访问响应数据的任何吸气剂或方法,就建立了连接。
因此,我不能简单地调用getHeaderFields(),因为这实际上会触发连接。 此辅助方法不应影响URLConnection的内部状态。 它仅应被动地从中读取数据(该数据已经存在,并跳过尚未加载的部分)。
简而言之,在访问任何触发connect()的方法之前,我需要一种方法来检查URLConnection是否已处于连接状态。
由于setDoOutput(boolean)
( Java-Doc )方法的性质,可以将其用于检测内部状态,如下所示:
public static boolean isConnected(URLConnection con) {
try {
con.setDoOutput(con.getDoOutput()); // throws IllegalStateException if connected
return false;
} catch (IllegalStateException e) {
return true;
}
}
这里对当前实现的方法进行参考:
public void setDoOutput(boolean dooutput) {
if (connected)
throw new IllegalStateException("Already connected");
doOutput = dooutput;
}
创建URLConnection
的子类,在此您可以访问具有protected
访问修饰符的已connected
字段。
除此之外,您可以调用如果已建立连接(例如uc.setDefaultUseCaches(uc.getDefaultUseCaches())
并引发异常的方法之一,则该异常将引发异常,或者可以使用反射来获取已connected
字段的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.