Java - самый быстрый способ и лучший код для загрузки URL и получения ответа от сервера - PullRequest
1 голос
/ 27 августа 2011

Мне было любопытно, какой самый лучший и самый быстрый способ получить ответ от сервера, скажем, если я использовал цикл for для загрузки URL-адреса, возвращающего XML-файл, каким способом я мог бы использовать для загрузки URL-адреса получить ответ 10 раз подряд? скорость это самое главное. Я знаю, что он может работать только так же быстро, как ваш интернет, но мне нужен способ загрузить URL так быстро, как это позволяет мой интернет, а затем поместить вывод url who в строку, чтобы я мог добавить его в JTextArea. Это код, который я использовал, но по возможности ищите более быстрые альтернативы

int times = Integer.parseInt(jTextField3.getText());</p> <pre><code> 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 ]

2 голосов
/ 27 августа 2011

Это похоже на работу для Java NIO (неблокирующий ввод / вывод) . Эта статья из Java 1.4, но все же даст вам хорошее понимание того, как настроить NIO. С тех пор NIO сильно развился, и вам, возможно, придется поискать API для Java 6 или Java 7, чтобы узнать, что нового.

Это решение, вероятно, лучше всего подходит в качестве асинхронного варианта. По сути, это позволит вам загрузить 10 URL-адресов, не дожидаясь завершения каждого из них, прежде чем переходить к следующему и загружать другой.

1 голос
/ 27 августа 2011

Вы не можете загрузить текст таким способом, поскольку 1024-байтовая граница может разбить кодированный символ на две части.

Скопируйте все данные в ByteArrayInputStream и используйте toString () для него или прочитайте текст как текст, используя BufferedReader.

0 голосов
/ 27 августа 2011

Использовать BufferedReader;использовать гораздо больший размер буфера, чем 1024;не глотайте исключения.Вы также можете попробовать повторно использовать один и тот же объект URL вместо создания нового каждый раз, это может помочь с пулом соединений.

Но зачем вам читать один и тот же URL 10 раз подряд?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...