Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
引发ConnectException之前的Java延迟_Java_Exception_Delay_Throw_Connectexception - Fatal编程技术网

引发ConnectException之前的Java延迟

引发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

我正在用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
    }
}
现在抛出异常大约需要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!!