0

出于某种原因,当我发出 GET 请求时,它似乎进入了无限循环。我认为这是我的网络应用程序有问题,但在尝试 google.com 后,出现了相同的结果。

    try {
        URL url = new URL("http://google.com");

        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setReadTimeout(10000 /* milliseconds */);
        con.setConnectTimeout(15000 /* milliseconds */);
        con.setRequestMethod("GET");
        con.setDoInput(true);
        con.connect();

        InputStream is = con.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));

        for (String line = reader.readLine(); line != null;) {
            System.out.println(line);
        }
        reader.close();

    } catch (ClientProtocolException e) {
        System.out.println("Client Exception " + e.getMessage());
    } catch(IOException e) {
        e.printStackTrace();
        System.out.println("IOException " + e.getMessage());
    }

这段代码永远不会通过 for 循环。它只是继续打印。任何人都看到有什么问题吗?

4

2 回答 2

1

问题就在这里

for (String line = reader.readLine(); line != null;) {
    System.out.println(line);
}

“line”始终是输入的第一行。您需要阅读新行。

于 2012-05-24T06:25:06.030 回答
1

line = reader.readLine() 每次循环运行时都应该调用,但在你的代码中只运行一次,因为它是初始化部分的一部分..

在此处输入图像描述

试试看

for (; (line =reader.readLine()) != null;) {

    }

or 


  while ((line = br.readLine()) != null) {}
于 2012-05-24T06:25:14.343 回答