2012-05-24 9 views
0

По какой-то причине, когда я делаю запрос GET, он, кажется, переходит в бесконечный цикл. Я думал, что у моего веб-приложения возникла проблема, но после попытки google.com возникают те же самые результаты.android http get request бесконечный цикл

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. Он просто продолжает печать. Кто-нибудь видит, что случилось?

+0

Очевидно, что это условия в цикле for. попробуйте использовать цикл while, который делает его более простым. вот полезная ссылка http://stackoverflow.com/questions/2500107/how-should-i-read-from-a-buffered-reader – shawndreck

ответ

1

линии = reader.readLine() shuold называют каждый раз, когда запускается цикл, но в коде в пробегах только один раз, так как это часть инициализации части ..

enter image description here

попробовать somehhing как

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

    } 

or 


    while ((line = br.readLine()) != null) {} 
+0

Конечно, я намеревался написать для (строка строки; (строка = читатель) .readLine())! = null;) спасибо! – user1218776

1

Проблема здесь «линия»

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

всегда первая строка ввода. Вам нужно прочитать новые строки.