Java HttpUrlConnection有时工作得太慢

Java HttpUrlConnection有时工作得太慢,java,http,proxy,httpurlconnection,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);

我用我的代码从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分钟后,它会从url获得响应并完美地下载文件,而在所有第二、第三和第四个请求都完美地工作并在2秒钟内下载文件之后(所以唯一的问题是为什么有时它在第一个请求中等待3或4分钟)

它只是偶尔发生。我不知道为什么。当它发生时,连接和读取超时不起作用。它会等待3或4分钟,不会出现take timeout异常

我调试代码,我认为当代码开始等待时,它会发生在那一行

  • int responseCode=con.getResponseCode()
为什么会这样?知道吗? 也许是代理或者其他什么。我真的想知道为什么会这样。
非常有趣的是,这个问题只会偶尔出现,而且只会在第一次请求中出现。

如果只是第一次请求,可能是dns查找问题(不确定),请在目标ip上尝试相同的方法,以确保我不理解您的意思。请添加一些更详细的信息。假设url是
abcd.com
,所以系统首先必须找出哪个ip映射到这个域,这意味着dns查找。由于客户端缓存第一次查找,因此如果第一次请求耗时,这将是因为dns查找。那么,我可以从代码中做些什么,或者我可以为这个问题做些什么?没有任何逻辑和可靠的方法,请先尝试将您的dns服务器更改为google公共dns服务器(8.8.8.8),通常这会有所帮助。另一种不好的方法是直接通过其ip调用域,而不是不推荐的域名,但由于其ip,它将跳过dns查找。