Итак, я запускаю приведенный ниже код, и он печатает "! DOCTYPE html". Как я могу получить содержимое URL, например html?
public static void main(String[] args) throws IOException { URL u = new URL("https://www.whitehouse.gov/"); InputStream ins = u.openStream(); InputStreamReader isr = new InputStreamReader(ins); BufferedReader websiteText = new BufferedReader(isr); System.out.println(websiteText.readLine()); }
Согласно java doc https://docs.oracle.com/javase/tutorial/networking/urls/readingURL.html: "Когда вы запускаете программу, вы должны видеть, прокручивая вокно команд, команды HTML и текстовое содержимое из файла HTML, расположенного по адресу ".... Почему я не получаю это?
В вашей программе ваш цикл не поставлен .
URL u = new URL("https://www.whitehouse.gov/"); InputStream ins = u.openStream(); InputStreamReader isr = new InputStreamReader(ins); BufferedReader websiteText = new BufferedReader(isr); String inputLine; while ((inputLine = websiteText.readLine()) != null){ System.out.println(inputLine); } websiteText.close();
Вы читаете только одну строку текста. Попробуйте это, и вы увидите, что вы получите две строки:
System.out.println(websiteText.readLine()); System.out.println(websiteText.readLine());
Попробуйте прочитать это в цикле, чтобы получить весь текст.
BufferedReader имеет метод с именем #lines () начиная с Java 8. Тип возврата #lines () - Stream. Чтобы прочитать весь сайт, вы можете сделать что-то вроде этого:
String htmlText = websiteText.lines() .reduce("", (text, nextLine) -> text + "\n" + nextLine) .orElse(null);