2016-03-23 5 views
0

レスポンスをファイルに保存できるGETハンドラを作成しようとしています。Java GETリクエストがレスポンスを2回返す

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(); 
} 

しかし、常に応答を2回返すようです。私はここで欠けているいくつかのロジックはありますか?応答全体を返し、応答全体を返します。それは我々がsaveGetToFile(文字列)が何かわからない、また「パス」変数に何が含まれているか、我々はそれらの線に何が起こるかを知ることができないので

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(); 
} 

答えて

-1

これを試してみてご覧ください。しかし、それまでのあなたのコードは素晴らしいですが、ストリームを閉じるのを忘れている点を除いては問題ありません。

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? 
} 

したい場合は、それまでのコードのアップが機能するかどうかを確認するためのSystem.out.println(builder.toString()します。

関連する問題