2016-10-10 2 views
0

Ich versuche, eine Datei mit Retrofit2 herunterladen. Ich habe folgenden Code:Datei herunterladen mit Retrofit2

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

ich es wie folgt verwendet werden:

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) { 
     } 
    }); 

-Code ausführt, Fein- und Datei wird heruntergeladen, aber es ist nicht von der Zeit, dh Streaming onResponse() aufgerufen wird, wird gesamte Daten bereits heruntergeladen in Erinnerung.

Wie kann ich große Dateien mit Retrofit per Streaming herunterladen?

Antwort

0

Der Code war in Ordnung. Ich hatte HttpLoggingInterceptor hinzugefügt, um meine HttpClient um HttpLoggingInterceptor.Level.BODY Ebene, die verursacht wurde ganze Antwort im Speicher für die Protokollierung Zweck gelesen werden.