2016-10-10 91 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添加到我的HttpClientHttpLoggingInterceptor.Level.BODY级别,导致整个响应在内存中读取以用于记录目的。