Java 使用InputStream读取url内容时遇到问题

Java 使用InputStream读取url内容时遇到问题,java,io,inputstream,bufferedreader,inputstreamreader,Java,Io,Inputstream,Bufferedreader,Inputstreamreader,所以我运行下面的代码,它会打印“!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 InputSt

所以我运行下面的代码,它会打印“!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文档:“当您运行程序时,您应该看到,在您的命令窗口中滚动,HTML命令和HTML文件中的文本内容位于”。。。。为什么我没听懂?

你只读了一行文字。 尝试此操作,您将看到两行代码:

System.out.println(websiteText.readLine());
System.out.println(websiteText.readLine());

尝试在循环中阅读它以获取所有文本。

在您的程序中,您的while循环未放入

   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();

自Java8以来,BufferedReader有一个名为#lines()的方法。#line()的返回类型是Stream。要阅读整个网站,您可以这样做:

String htmlText = websiteText.lines()
  .reduce("", (text, nextLine) -> text + "\n" + nextLine)
  .orElse(null);

您发布的代码与您引用的教程中的代码不同,因此没有理由认为它的行为应该相同。