2014-06-19 15 views

Odpowiedz

15

Tak, można użyć adnotacji @Streaming, która jest dostępna od wersji 1.6.0. Upewnij się, że używasz tej wersji.

Jak określono w changelog: Nowość: @Streaming na typie odpowiedzi pominie buforowanie treści do bajtu [] przed dostarczeniem.

interface Api {   
    @Get("path/to/your/resource") 
    @Streaming 
    Response getData(); 
} 

Należy następnie móc strumieniowo bezpośrednio z InputStream jak tak

Response response = api.getData() 
InputStream is = response.getBody().in(); 
// stream your data directly from the InputStream! 

Należy pamiętać, że mój przykład jest synchroniczna dla prostoty.

2

Aby zakończyć @Miguel Lavigne odpowiedzieć oto jak to zrobić z modernizacją 2:

interface Service { 
    @GET("path/to/your/resource") 
    @Streaming 
    Call<ResponseBody> getData(); 
} 


Call<ResponseBody> call = service.getData(); 
try { 
    InputStream is = call.execute().body().byteStream(); 
    (...) 
} catch (IOException e) {...} 
Powiązane problemy