JAVA:从HTTPS URL获取响应代码的最快和最好的方法是什么?

时间:2015-06-10 19:49:39

标签: java url https

    private int getResponse(String url) throws Exception {

    try {
       URL check = new URL(url);
       HttpsURLConnection connection = (HttpsURLConnection)check.openConnection();
       connection.setRequestMethod("GET");
       connection.setConnectTimeout(5000);
       connection.connect();

       return(connection.getResponseCode());

    } catch (java.net.SocketTimeoutException e) {
           return getResponse(url);
    }

}

是否有更快的方式从URL获取响应代码而不是HttpsURLConnection?

我从HTTP Client Commons尝试过HeadMethod,但速度并不快。

提前致谢

1 个答案:

答案 0 :(得分:2)

与正常的互联网延迟和Java本身正在使用的网络堆栈(由底层操作系统提供)相比,我强烈怀疑差异绝对最小。

虽然提出1个请求会产生大致相同的开销而不管库(只要它没有完全被破坏; Apache Commons和JDK都可以),如果你要发出多个请求,有几件事情可以做将大大提高绩效:

  • 如果您需要尽快完成多个请求,并且在启动其他请求之前不需要完成每个请求,那么请执行并行操作。一个有用的指针可能是https://github.com/AsyncHttpClient/async-http-client(Project Grizzly的一部分;使用NIO进行非阻塞,高度可扩展的通信)
  • 如果您要从同一网站执行其他请求,那么如果您使用keep-alive标头并为多个请求重复使用相同的连接,您将看到显着的性能提升(> 2x)。这是由于HTTPS连接的高设置成本。有关HTTP vs HTTPS performance的更多信息(以及一张精美的图表here)。首次HTTPS请求需要2次往返才能在交换任何数据之前协商加密;进一步的请求可以避免握手。