retrofit下载文件
时间: 2023-09-19 12:05:19 浏览: 58
使用 Retrofit 下载文件需要定义一个返回类型为 `Call<ResponseBody>` 的 Retrofit 接口,其中 `ResponseBody` 表示响应体,它可以包含文件数据。下面是一个简单的示例代码:
```java
public interface FileDownloadService {
@GET("file/download")
Call<ResponseBody> downloadFile(@Query("fileUrl") String fileUrl);
}
```
然后,你可以在应用程序中使用这个接口来下载文件。下面是一个使用 Retrofit 下载文件的示例:
```java
String fileUrl = "https://example.com/file.pdf";
Call<ResponseBody> call = fileDownloadService.downloadFile(fileUrl);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if (response.isSuccessful()) {
// 获取文件数据
ResponseBody body = response.body();
try {
InputStream inputStream = body.byteStream();
// 创建文件
File file = new File(Environment.getExternalStorageDirectory(), "file.pdf");
FileOutputStream outputStream = new FileOutputStream(file);
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
outputStream.flush();
outputStream.close();
inputStream.close();
// 下载完成
Log.d(TAG, "Download completed!");
} catch (IOException e) {
e.printStackTrace();
}
} else {
Log.d(TAG, "Download failed!");
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Log.e(TAG, "Download failed: " + t.getMessage());
}
});
```
在这个示例中,我们首先创建了一个 Retrofit 接口 `FileDownloadService`,然后使用这个接口下载文件。在响应成功时,我们从响应体中获取文件数据,并将其写入存储设备中的文件。在响应失败时,我们打印一条日志消息。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)