HttpUrlConnection有时会运行得太慢

时间:2015-09-06 21:19:47

标签: java http proxy httpurlconnection

我使用我的代码从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分钟而没有超时超时。

我调试代码,我认为当代码开始等待它发生在该行上时。

  • int responseCode = con.getResponseCode();

为什么会发生?有什么想法吗? 也许代理或其他任何东西。我真的想知道它为什么会发生。 并且非常有趣的是,问题有时只会发生,并且只会在第一次请求中发生。

0 个答案:

没有答案