Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HTML的响应是重复的行_Java - Fatal编程技术网

Java HTML的响应是重复的行

Java HTML的响应是重复的行,java,Java,我想得到aliexpress的HTML响应,它正在工作,但当我尝试在浏览器中加载代码时,它似乎在同一个onglet中重复了很多次 package scrape; import java.io.*; import java.net.*; public class Scrape { public static void main(String[] args) throws ProtocolException, MalformedURLException, IOException {

我想得到aliexpress的HTML响应,它正在工作,但当我尝试在浏览器中加载代码时,它似乎在同一个onglet中重复了很多次

package scrape;

import java.io.*;
import java.net.*;

public class Scrape {
    public static void main(String[] args) throws ProtocolException, MalformedURLException, IOException {
        URL url;
        url = new URL("https://best.aliexpress.com");
        HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
        urlConnection.setRequestMethod("GET");
        BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())) ;
        String inputLine;
        StringBuffer content = new StringBuffer();
        while ((inputLine = in.readLine()) != null ) {
            content.append(inputLine);
            System.out.println(content);
        }  
    }
}

您正在循环中追加
StringBuffer
,并每次打印它

要解决此问题,请将print语句移动到循环之外:

while ((inputLine = in.readLine()) != null ) {
    content.append(inputLine);
}
System.out.println(content);

这是因为,当您输出内容时,您输出的是
内容
,而不是
输入行
。这意味着,当你得到这样的输入时:

第1行
第2行
第3行

您的输出将如下所示:

第1行
第1行第2行
第1行第2行第3行

为了获得所需的输出,您可以在每次迭代时打印该行,如下所示:

StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null ) {
    content.append(inputLine);
    System.out.println(inputLine);
}
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null ) {
    content.append(inputLine);
}
System.out.println(content);
输出:

第1行
第2行
第3行

否则,您可以在迭代结束时打印完整输出,如下所示:

StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null ) {
    content.append(inputLine);
    System.out.println(inputLine);
}
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null ) {
    content.append(inputLine);
}
System.out.println(content);
这将获得输出:

第1行第2行第3行

现在,如果要按行拆分此输入,只需在输入之间添加一个行分隔符:

StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null ) {
    if(content.length() != 0) {
        content.append(System.lineSeparator());
    }
    content.append(inputLine);
}
System.out.println(content);
这将获得以下输出:

第1行
第2行
第3行


什么是红葡萄酒?不,不是。您正在显示每一行的累积内容,其中必然包括前几行。噢,谢谢,忘记了:)thnks bro;):)