Лучший и быстрый способ прочитать строку из URL - PullRequest
0 голосов
/ 28 сентября 2011

Я использую этот код для чтения содержимого с данного URL.Есть ли и более быстрый и лучший способ сделать это?

private static String readUrl(String urlString) throws Exception {
    BufferedReader reader = null;
    try {
        URL url = new URL(urlString);
        reader = new BufferedReader(new InputStreamReader(url.openStream()));
        StringBuffer buffer = new StringBuffer();
        int read;
        char[] chars = new char[1024];
        while ((read = reader.read(chars)) != -1)
            buffer.append(chars, 0, read); 

        return buffer.toString();
    } finally {
        if (reader != null)
            reader.close();
    }
}

Ответы [ 4 ]

1 голос
/ 28 сентября 2011

Это HTTP-URL? Если да, то вы

  • должен посмотреть на заголовок Content-Type и убедиться, что вы применяя правильную кодировку к потоку. На самом деле, вы применяете кодировку по умолчанию вашей конкретной установки JVM, которая может не соответствовать тому, что сервер отправляет
  • должен посмотреть на заголовок Content-Length, чтобы предварительно определить размер буфера.

Кроме этих двух изменений, не так много возможностей для ускорения байтов по сети.

Редактировать: вы также можете использовать Jakarta Commmons IOUtils.toString () для чтения потока. Это уменьшит объем кода, который вы должны написать (и может считаться полностью отлаженным). Тем не менее, он должен будет изменить размер буферов по пути.

1 голос
/ 28 сентября 2011

Используйте StringBuilder вместо StringBuffer

0 голосов
/ 28 сентября 2011

Вы также можете использовать «BufferedReader.readLine ()»

0 голосов
/ 28 сентября 2011

Ну, есть онлайн-библиотеки, которые сделают это за вас:

http://json.org/java/

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