package com.ard.zlm.utils; import lombok.extern.slf4j.Slf4j; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import java.io.IOException; import java.io.InputStream; import java.util.zip.ZipOutputStream; @Slf4j public class HttpUtils { public static boolean downLoadFile(String url, ZipOutputStream zos) { OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(url) .build(); try (Response response = client.newCall(request).execute()) { if (!response.isSuccessful()) { log.error("下载失败,HTTP 状态码: {}, URL: {}", response.code(), url); return false; } // 获取响应体的输入流 InputStream inputStream = null; if (response.body() != null) { inputStream = response.body().byteStream(); } if (inputStream == null) { log.error("响应体为空,无法下载文件: {}", url); return false; } // 将输入流写入zip文件 byte[] buffer = new byte[8192]; // 8KB 缓冲区,提高性能 int bytesRead; while ((bytesRead = inputStream.read(buffer)) != -1) { zos.write(buffer, 0, bytesRead); } log.debug("成功下载文件: {}, 大小: {} bytes", url, response.body().contentLength()); return true; } catch (IOException e) { log.error("下载过程中出错: {}, URL: {}", e.getMessage(), url); return false; } } }