Как получить InputStream из URL-адреса?
например, я хочу взять файл по URL-адресу wwww.somewebsite.com/a.txt
и прочитать его как InputStream в Java через сервлет.
я пробовал
InputStream is = new FileInputStream("wwww.somewebsite.com/a.txt");
но я получил ошибку:
java.io.FileNotFoundException
java
url
inputstream
Белый медведь
источник
источник
servlets
тега? Здесь нетjavax.servlet.*
API. У вас возникнет точно такая же проблема, если вы сделаете это в обычном Java-классе сmain()
методом.Ответы:
Используйте
java.net.URL#openStream()
правильный URL (включая протокол!). НапримерСмотрите также:
источник
Пытаться:
источник
(а)
wwww.somewebsite.com/a.txt
не является «URL-адресом файла». Это вообще не URL. Если вы поместитеhttp://
его спереди, это будет URL-адрес HTTP, что явно то, что вы здесь имеете в виду.(б)
FileInputStream
предназначен для файлов, а не для URL-адресов.(c) Способ получения входного потока с любого URL-адреса - через
URL.openStream(),
илиURL.getConnection().getInputStream(),
что-то подобное, но у вас могут быть другие причины, чтобыURLConnection
сначала получить и поиграть с ним.источник
В исходном коде используется FileInputStream, предназначенный для доступа к файлам, размещенным в файловой системе.
Используемый вами конструктор попытается найти файл с именем a.txt в подпапке www.somewebsite.com текущего рабочего каталога (значение системного свойства user.dir). Введенное вами имя преобразуется в файл с использованием класса File.
Объекты URL - это общий способ решить эту проблему. Вы можете использовать URL-адреса для доступа к локальным файлам, а также к ресурсам, размещенным в сети. Класс URL поддерживает протокол file: //, кроме http: // или https: //, так что все готово.
источник
Чистая Java:
С некоторым успехом использую этот метод. Он обрабатывает перенаправления, и можно передавать переменное количество заголовков HTTP как
Map<String,String>
. Он также позволяет перенаправлять с HTTP на HTTPS .Полный пример вызова
источник
HttpURLConnection
уже будет следовать перенаправлениям, если вы не скажете ему не делать этого, чего вы не сделали.HttpURLConnection
, как я уже сказал, перенаправления уже выполняются по умолчанию.Вот полный пример, который читает содержимое данной веб-страницы. Веб-страница читается из HTML-формы. Мы используем стандартные
InputStream
классы, но это проще сделать с помощью библиотеки JSoup.Это зависимости Maven. Мы используем библиотеку Apache Commons для проверки строк URL.
ReadWebPage
Сервлета считывает содержимое данного веб - страницы и отправляет его обратно клиенту в текстовом формате. Задача чтения страницы делегированаWebPageReader
.WebPageReader
проверяет URL-адрес и читает содержимое веб-страницы. Он возвращает строку, содержащую HTML-код страницы.Наконец, это домашняя страница, содержащая HTML-форму. Это взято из моего учебника по этой теме.
источник