我正在使用Retrofit来使用Web服务,到目前为止它很棒。但Retrofit是否提供了从URL下载视频的方法?
我查看了此链接,但@Streaming
注释不再可用。Retro fit Image download
答案 0 :(得分:15)
是的,你可以使用从版本1.6.0开始提供的@Streaming注释。确保使用该版本。
正如changelog中所述: 新增:响应类型的@Streaming将在传递之前跳过将主体缓冲到byte []。
interface Api {
@Get("path/to/your/resource")
@Streaming
Response getData();
}
然后你应该能够直接从InputStream直接流式传输
Response response = api.getData()
InputStream is = response.getBody().in();
// stream your data directly from the InputStream!
请记住,为简单起见,我的示例是同步的。
答案 1 :(得分:2)
要完成@Miguel Lavigne,这里的答案是如何使用Retrofit 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) {...}