我很好奇从服务器获取响应的最佳和最快的方法是什么,比如我是否使用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
答案 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次读取相同的网址?