【问题标题】:Java - Fastest way, and best code to load a URL and get a response from the serverJava - 加载 URL 并从服务器获取响应的最快方式和最佳代码
【发布时间】:2011-08-27 07:36:20
【问题描述】:

我很好奇从服务器获取响应的最佳和最快的方法是什么,比如说如果我使用 for 循环加载返回 XML 文件的 url,我可以使用哪种方式来加载 url get连续响应 10 次?速度是最重要的。我知道它只能和你的互联网一样快,但我需要一种方法来尽可能快地加载 url,然后将 url 的 who 输出放在一个字符串中,这样我就可以附加到 JTextArea .. 这是我一直在使用的代码,但如果可能,请寻求更快的替代方案

int times = Integer.parseInt(jTextField3.getText());

            for(int abc = 0; abc!=times; abc++){
                try {
                        URL gameHeader = new URL(jTextField2.getText());
                        InputStream in = gameHeader.openStream();
                        byte[] buffer = new byte[1024];
                    try {
                        for(int cwb; (cwb = in.read(buffer)) != -1;){
                            jTextArea1.append(new String(buffer, 0, cwb));
                        } 
                    } catch (IOException e) {}
                } catch (MalformedURLException e) {} catch (IOException e) {}
            }

有什么比这更快的吗?

谢谢

-CLUEL3SS

【问题讨论】:

  • 如果您需要更快,您需要并行执行。查看 Executors 和 Callables。
  • 这适用于所有系统吗?我正在为我的网站用户制作应用程序并计划分发,我会有问题吗?
  • 我很好奇你为什么要尽可能快地重复调用同一个 URL。这会给您的网络服务器带来相当大的负载,因此如果您想立即/尽快获得更新,这很可能是错误的做法。加上免费的 URL 字段,这对我来说更像是对 DOS 工具的尝试。
  • 绝对不是一个DOS工具,我没那么歪,它是一个加载标题的工具,在myspace上的游戏中完成一个动作,目标是有一个程序可以加载标题以足够快地完成游戏中的某些事情以取得成功。不是dos工具

标签: java http url response


【解决方案1】:

这似乎是Java NIO (Non-blocking IO) 的工作。 This article 来自 Java 1.4,但仍然可以让您很好地了解如何设置 NIO。从那时起,NIO 已经发展了很多,您可能需要查找 Java 6 或 Java 7 的 API 以了解新功能。

这个解决方案可能是最好的异步选项。基本上,它允许您加载 10 个 URL,而无需等待每个 URL 完成后再继续加载另一个。

【讨论】:

    【解决方案2】:

    您不能以这种方式加载文本,因为 1024 字节的边界可能会将编码字符一分为二。

    将所有数据复制到 ByteArrayInputStream 并在其上使用 toString() 或使用 BufferedReader 将 Text 读取为 Text。

    【讨论】:

      【解决方案3】:

      使用 BufferedReader;使用比 1024 大得多的缓冲区大小;不要吞下异常。您也可以尝试重复使用相同的 URL 对象,而不是每次都创建一个新对象,这可能有助于连接池。

      但是为什么要连续读取同一个 URL 10 次呢?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-15
        • 1970-01-01
        • 2012-01-07
        • 1970-01-01
        • 1970-01-01
        • 2013-11-11
        相关资源
        最近更新 更多