0

GETリクエストをするとなぜか無限ループに陥ってしまいます。私の Web アプリに問題があると思っていましたが、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 に答える