2016-03-23 25 views
0

Bir dosyaya yanıtı kaydedebilen bir GET işleyicisi yazmaya çalışıyorum.Java GET isteği yanıtı iki kez döndürür

public String get(String[] args) throws IOException { 
    URL url = new URL(args[1]); 
    BufferedReader input = new BufferedReader(new InputStreamReader(url.openStream())); 
    String output = ""; 
    String line = input.readLine(); 
    while(line != null){ 
    output += line + "\n"; 
    line = input.readLine(); 
    } 
    saveGetToFile(output); 
    return "Response saved to: " + path.toString(); 
} 

Ancak her zaman iki kere tepkisini dönmek gibi görünüyor. Burada özlediğim bir mantık var mı? Tüm yanıtı geri verir, ardından tüm yanıtı tekrar izler. biz saveGetToFile (String) yapar bilmiyorum, ne 'yol' değişken ne içerdiğini, biz bu çizgilerin neler olduğunu bilemeyiz yana

public String get(String[] args) throws IOException { 
    URL url = new URL(args[1]); 
    BufferedReader input = new BufferedReader(new InputStreamReader(url.openStream())); 
    String output = ""; 
    String line; 

    while((line=input.readLine())!= null){ 
     output += line + "\n"; 
    } 

    saveGetToFile(output); 
    return "Response saved to: " + path.toString(); 
} 

cevap

-1

bu deneyin ve görün. Ama o zamana kadar kodunuz gayet iyi, dedikoduyu kapatmayı unutmadan.

public String get() throws IOException { 
    URL url = new URL("http://httpbin.org/get"); 
    StringBuilder builder = new StringBuilder(); 
    BufferedReader reader = null; 
    try { 
     reader = new BufferedReader(new InputStreamReader(url.openStream())); 
     String line; 
     while ((line = reader.readLine()) != null) { 
      builder.append(line).append("\n"); 
     } 
    } finally { 
     if (reader!=null) { 
      reader.close(); 
     } 
    } 
    saveGetToFile(builder.toString()); //Does this method modify the value of your variable 'path'? 
    return "Response saved to: " + path.toString(); //Where do you write to path? 
} 

İsterseniz, bir System.out.println (builder.toString() o ana kadar kod çalıştığını doğrulamak için yapın.