引发ConnectException之前的Java延迟
我正在用Java编写一些代码来从URL下载东西,在我的配置中,一些下载应该由代理处理,而另一些则不需要代理 因此,我编写了这段代码(它可以工作)来下载所有URL类型,但我想减少抛出ConnectException之前的延迟时间,以便代码可以更快地执行引发ConnectException之前的Java延迟,java,exception,delay,throw,connectexception,Java,Exception,Delay,Throw,Connectexception,我正在用Java编写一些代码来从URL下载东西,在我的配置中,一些下载应该由代理处理,而另一些则不需要代理 因此,我编写了这段代码(它可以工作)来下载所有URL类型,但我想减少抛出ConnectException之前的延迟时间,以便代码可以更快地执行 URL global_url = new URL("http://google.com"); Scanner sc = null; try { sc = new Scanner(global_url.openStream()); } ca
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
}
}
现在抛出异常大约需要10秒,我想把这个时间减少到最多2秒或3秒
我能得到一些帮助吗?
谢谢 您可以这样设置超时:
long connectTimeout = 3000;
URL global_url = new URL(urlPath);
URLConnection con = global_url.openConnection();
con.setConnectTimeout(connectTimeout);
其中connectTimeout可以设置为毫秒。由于需要3s超时,所以将其设置为3000。全局url的类型是什么?我正在关联
URL
。当然,全局URL的类型是URL yes;)这个代码无论如何都不起作用。这些系统属性只读取一次,并且在任何情况下都不会清除它们。您需要仔细了解如何使用java.net.Proxy。@EJP:我不知道您为什么声称这段代码不起作用,它在我的程序上运行得非常好。。。当我有一个不需要使用代理的本地url时,我会立即获取文件,而当我想要一个“外部”url时,我会捕获异常并使用代理获取文件…谢谢你的回答。然后我给我的扫描器提供:Scanner sc=new Scanner(con.getInputStream())?也许你应该补充一点,当超时结束时,它会引发一个SocketTimeoutException,而不是ConnectExcepion;)除了这一点,它的工作很好,再次thx!!