在Android开发中,我们经常需要从服务器上获取图片资源,并且需要获取到这些图片的大小信息。本篇技术向解析文章将介绍如何通过Android程序获取服务器上全部图片的大小信息,下面是详细的步骤和代码示例。
我们可以使用OkHttp库来进行网络请求,因此需要在项目的build.gradle文件中添加如下依赖:
implementation 'com.squareup.okhttp3:okhttp:4.9.1'
由于网络请求需要在异步任务中进行,因此我们需要创建一个AsyncTask子类来进行网络请求。
public class GetImageSizesTask extends AsyncTask> {
private static final String TAG = GetImageSizesTask.class.getSimpleName();
private final String serverUrl;
public GetImageSizesTask(String serverUrl) {
this.serverUrl = serverUrl;
}
@Override
protected Map doInBackground(Void... voids) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(serverUrl)
.build();
Map imageSizes = new HashMap<>();
try {
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
String responseBody = response.body().string();
JSONObject jsonObject = new JSONObject(responseBody);
JSONArray jsonArray = jsonObject.getJSONArray("images");
for (int i = 0; i < jsonArray.length(); i++) {
String imageUrl = jsonArray.getString(i);
Request headRequest = new Request.Builder()
.head()
.url(imageUrl)
.build();
Response headResponse = client.newCall(headRequest).execute();
if (headResponse.isSuccessful()) {
long contentLength = Long.parseLong(headResponse.header("Content-Length"));
imageSizes.put(imageUrl, contentLength);
}
}
} else {
Log.e(TAG, "get image sizes failed, code = " + response.code());
}
} catch (IOException e) {
Log.e(TAG, "get image sizes failed", e);
} catch (JSONException e) {
Log.e(TAG, "parse response failed", e);
}
return imageSizes;
}
}
在上面的代码中,我们首先创建一个OkHttpClient对象,并设置请求url。然后我们读取服务器返回的JSON响应,遍历其中的每一张图片,并用HEAD方法获取图片的Content-Length头信息,从而获得该图片的大小。将图片大小信息存入Map中并返回即可。
在需要
上一篇:android获取服务器版本号