使用retrofit2下载文件

时间:2016-10-10 11:09:07

标签: android 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(),整个数据已经下载到内存中。

如何使用流媒体改造下载大文件?

1 个答案:

答案 0 :(得分:0)

代码很好。我在HttpLoggingInterceptor HttpClientHttpLoggingInterceptor.Level.BODY添加了s = "ebber" ,这导致在内存中读取完整响应以进行日志记录。