我使用我的代码从URL下载文件。它可以很好地下载文件。但有时候我有问题。这就是代码。
System.setProperty("https.proxyHost",myproxy);
System.setProperty("https.proxyPort","80");
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setConnectTimeout(5000);
con.setReadTimeout(10000);
int responseCode = con.getResponseCode();
InputStream is = con.getInputStream();
System.out.println("Inputstream done");
FileOutputStream fos = fos = new FileOutputStream("D:\\tryfile\\file1.csv");
byte[] buffer = new byte[4096]; //declare 4KB buffer
int len;
while ((len = is.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
is.close();
通常代码会在1或2秒内下载文件并且工作正常。但有时下载同一文件需要3-4分钟。
例如我逐个发送了4个HTTP请求。通常它没有问题。它发送了4个http请求并从4个不同的URL完全下载了4个文件。
但有时第一个请求会等待3到4分钟才能工作。等待3或4分钟后,它会从网址获取响应并完美地下载文件,并且在完成所有第二个,第三个和第四个请求完美工作并下载2个文件后秒(所以唯一的问题是为什么有时它会在第一次请求中等待3或4分钟)
它有时只会发生。而且我不知道为什么。当它发生时,连接和读取超时都不起作用。它等待3或4分钟而没有超时超时。
我调试代码,我认为当代码开始等待它发生在该行上时。
为什么会发生?有什么想法吗? 也许代理或其他任何东西。我真的想知道它为什么会发生。 并且非常有趣的是,问题有时只会发生,并且只会在第一次请求中发生。