【发布时间】:2013-07-07 05:13:43
【问题描述】:
我正在用 Java 编写一些代码来从 url 下载内容,在我的配置中,一些下载应该由代理处理,而其他的则没有它。
所以我编写了这段代码(它可以工作)来下载所有 URL 类型,但我想减少抛出 ConnectException 之前的延迟时间,以便代码可以更快地执行。
URL global_url = new URL("http://google.com");
Scanner sc = null;
try {
sc = new Scanner(global_url.openStream());
}
catch (ConnectException e) {
try {
System.setProperty("http.proxyHost", "my.host");
System.setProperty("http.proxyPort", "my.port");
sc = new Scanner(global_url.openStream());
System.setProperty("http.proxyHost", "");
System.setProperty("http.proxyPort", "");
}
catch (ConnectException exc) {
//Do stuff
}
}
现在大约需要。 10s 在抛出异常之前,我想将此时间减少到最多 2s 或 3s。
我能得到一些帮助吗? 谢谢!
【问题讨论】:
-
global_url的类型是什么?我在保证URL。 -
当然 global_url 的类型是 URL yes ;)
-
这段代码无论如何都不起作用。这些系统属性只读取一次,无论如何您都不会清除它们。你需要好好看看如何使用 java.net.Proxy。
-
@EJP :我不知道你为什么声称这段代码不起作用,它在我的程序上完美运行......当我有一个不需要使用的本地 url 时代理,我会立即获取文件,而当我想要一个“外部”url时,我会捕获异常并使用代理获取文件...
标签: java exception delay throw connectexception