Java - 最快的方式,以及加载URL并从服务器获取响应的最佳代码

时间:2011-08-27 07:36:21

标签: java http url response

我很好奇从服务器获取响应的最佳和最快的方法是什么,比如我是否使用for循环来加载返回XML文件的url,我可以使用哪种方式来加载url get连续10次回复?速度是最重要的。我知道它只能像你的互联网一样快,但我需要一种方法来加载网址,就像我的互联网允许的那样快,然后把网址的输出放在一个字符串中,这样我就可以追加到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) {}
            }

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

3 个答案:

答案 0 :(得分:2)

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

此解决方案可能最适合作为异步选项。基本上,它允许您加载10个URL,而无需等待每个URL完成后再​​继续并加载另一个。

答案 1 :(得分:1)

您不能以这种方式加载文本,因为1024字节边界可能会破坏两个编码字符。

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

答案 2 :(得分:0)

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

但为什么要连续10次读取相同的网址?