2016-10-10 10 views
0

retrofit2を使用してファイルをダウンロードしようとしています。私はこのようにそれを使用retrofit2を使用してファイルをダウンロードする

@Streaming 
@GET 
Call<ResponseBody> downloadFile(@Url String fileUrl); 

:私は、次のコードしている

final Call<ResponseBody> call = Api.getMediaService().downloadFile(uri.toString()); 
call.enqueue(new Callback<ResponseBody>() { 
     @Override 
     public void onResponse(Call<ResponseBody> call, final Response<ResponseBody> response) { 
      new AsyncTask<Void, Void, Void>() { 
       @Override 
       protected Void doInBackground(Void... params) { 
        copyInputStreamToFile(response.body().byteStream()); 
        return null; 
       } 
      }.execute(); 
     } 

     @Override 
     public void onFailure(Call<ResponseBody> call, Throwable t) { 
     } 
    }); 

コードが細かい実行し、ファイルがダウンロードされるが、その呼び出された時onResponse()によってすなわちストリーミングではない、全体のデータがすでにダウンロードされますメモリ。

ストリーミングを使用してレトロフィットを使用して大きなファイルをダウンロードするにはどうすればよいですか?

答えて

0

コードは問題ありませんでした。私はHttpLoggingInterceptorを私のHttpClientに追加しました。HttpLoggingInterceptor.Level.BODYレベルで、ログ全体の応答がメモリに読み込まれてログに記録されました。

関連する問題