我正在尝试使用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 :(得分:0)
代码很好。我在HttpLoggingInterceptor
HttpClient
处HttpLoggingInterceptor.Level.BODY
添加了s = "ebber"
,这导致在内存中读取完整响应以进行日志记录。