Я пытаюсь найти Java-эквивалент Groovy:
String content = "http://www.google.com".toURL().getText();
Я хочу читать содержимое из URL в строку. Я не хочу загрязнять свой код буферизованными потоками и циклами для такой простой задачи. Я посмотрел в HttpClient Apache, но я также не вижу одно-двухстрочной реализации.
Ответы:
Теперь, когда прошло некоторое время с момента принятия первоначального ответа, есть лучший подход:
Если вы хотите немного более полную реализацию, которая не состоит из одной строки, сделайте это:
источник
Scanner#close()
позже.String result = scanner.hasNext() ? scanner.next() : "";
справиться с этим.Этот ответ относится к более старой версии Java. Вы можете посмотреть на ответ ccleve.
Вот традиционный способ сделать это:
Как предложил @extraneon , ioutils позволяет вам сделать это очень красноречивым способом, который все еще в духе Java:
источник
getText
, передать строку URL в качестве параметра и получить однострочную строку:String content = URLConnectionReader.getText("http://www.yahoo.com/");
Или просто используйте Apache Commons
IOUtils.toString(URL url)
, или вариант, который также принимает параметр кодирования.источник
IOUtils.toString(URL)
не рекомендуется.IOUtils.toString(URL url, String encoding)
является предпочтительным.IOUtils.toString(url, (Charset) null)
достичь аналогичного результата.Теперь, когда прошло больше времени, вот способ сделать это в Java 8:
источник
http://www.worldcat.org/webservices/catalog/search/opensearch
веб-сервисе я получаю только первые две строки XML.В Java 9 есть еще лучший способ:
Как и в оригинальном groovy-примере, предполагается, что содержимое кодировано в кодировке UTF-8. (Если вам нужно что-то более умное, вам нужно создать URLConnection и использовать его для выяснения кодировки.)
источник
getClass().getResourceAsStream(...)
для открытия текстовых файлов внутри банки.Дополнительный пример использования гуавы:
источник
Если у вас есть входной поток (см. Ответ Джо), также рассмотрите ioutils.toString (inputtream).
http://commons.apache.org/io/api-1.4/org/apache/commons/io/IOUtils.html#toString(java.io.InputStream )
источник
Следующее работает с Java 7/8, защищенными URL-адресами и показывает, как добавить cookie в ваш запрос. Обратите внимание, что это в основном прямая копия этого другого замечательного ответа на этой странице , но добавлен пример файла cookie и пояснение, что он работает и с безопасными URL-адресами ;-)
Если вам необходимо подключиться к серверу с недействительным сертификатом или самозаверяющим сертификатом, это приведет к ошибкам безопасности, если вы не импортируете сертификат. Если вам нужна эта функциональность, вы можете рассмотреть подход, подробно описанный в этом ответе на этот связанный вопрос о StackOverflow.
пример
выходы
Код
источник
Вот прекрасный ответ Джинн, но она обернута в аккуратную функцию для таких кукол, как я:
источник
URL на строку в чистом Java
Пример вызова
Реализация
Вы можете использовать метод, описанный в этом ответе, в разделе Как читать URL-адрес для InputStream и комбинировать его с этим ответом в разделе Как читать InputStream для String .
Результат будет примерно таким
Pros
Это чистая ява
Его можно легко улучшить, добавив различные заголовки (вместо передачи нулевого объекта, как в примере выше), аутентификацию и т. Д.
Обработка протокольных коммутаторов поддерживается
источник