如何使用 retrofit 2 获取文件大小。我试过return-1?
How to get file size using retrofit 2 . I tried by return -1?
我想构建应用程序以使用进度条下载文件,我试图从服务器获取文件大小。在使用 retrofit 2 库但未能获得总文件大小时。和 return -1,我在 build:gradle:3.0.1
上测试了它的工作,但在 build:gradle:3.5.3
[=15 上没有测试=]
这是我的代码
ApiService apiService = RetroClient.getApiService();
Call<ResponseBody> call = apiService.downloadFile("fsharpapps/fonts/customFont.ttf");
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if (response.isSuccessful()) {
if (response.body() != null) {
AppUtil.mToast(DownloadService.this, "Downloading...");
boolean isDownload = writeResponseBodyToDisk(response.body());
if (isDownload)
AppUtil.mToast(DownloadService.this, "file size" + response.body().contentLength());
}}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
}
});
// output is file size -1
但是当我检查 header 文件时它工作正常。
here is HTTP Status for: "http://mywebsite.com/fsharpapps/fonts/customFont.ttf"
HTTP/1.1 200 OK
Date: Tue, 31 Dec 2019 19:03:16 GMT
Server: Apache
Upgrade: h2,h2c
Connection: Upgrade, close
Last-Modified: Sat, 21 Oct 2017 08:55:53 GMT
Accept-Ranges: bytes
Content-Length: 13857268
Vary: Accept-Encoding,User-Agent
Content-Type: font/ttf
在您的界面中使用 header
public interface RetrofitInterface {
@Headers({"Accept-Encoding: *","Content-Type: font/ttf"})
@Streaming
@GET("yourfile.ttf")
Call<ResponseBody> downloadFile();
}
我想构建应用程序以使用进度条下载文件,我试图从服务器获取文件大小。在使用 retrofit 2 库但未能获得总文件大小时。和 return -1,我在 build:gradle:3.0.1
上测试了它的工作,但在 build:gradle:3.5.3
[=15 上没有测试=]
这是我的代码
ApiService apiService = RetroClient.getApiService();
Call<ResponseBody> call = apiService.downloadFile("fsharpapps/fonts/customFont.ttf");
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if (response.isSuccessful()) {
if (response.body() != null) {
AppUtil.mToast(DownloadService.this, "Downloading...");
boolean isDownload = writeResponseBodyToDisk(response.body());
if (isDownload)
AppUtil.mToast(DownloadService.this, "file size" + response.body().contentLength());
}}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
}
});
// output is file size -1
但是当我检查 header 文件时它工作正常。
here is HTTP Status for: "http://mywebsite.com/fsharpapps/fonts/customFont.ttf"
HTTP/1.1 200 OK
Date: Tue, 31 Dec 2019 19:03:16 GMT
Server: Apache
Upgrade: h2,h2c
Connection: Upgrade, close
Last-Modified: Sat, 21 Oct 2017 08:55:53 GMT
Accept-Ranges: bytes
Content-Length: 13857268
Vary: Accept-Encoding,User-Agent
Content-Type: font/ttf
在您的界面中使用 header
public interface RetrofitInterface {
@Headers({"Accept-Encoding: *","Content-Type: font/ttf"})
@Streaming
@GET("yourfile.ttf")
Call<ResponseBody> downloadFile();
}