2016-10-10 1 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

코드는 괜찮습니다. 나는 내 HttpClientHttpLoggingInterceptor을 추가하여 전체 응답을 로깅 목적으로 메모리에서 읽게하는 레벨 인 HttpLoggingInterceptor.Level.BODY 레벨에 추가했습니다.