Skip to content

上传和下载 ​

使用 HttpDownloadUtils 下载文件 ​

HttpDownloadUtils.download 使用 HTTP GET 下载内容,返回内存中的 ByteArrayOutputStream。可以传入自定义请求头;不需要请求头时使用单参数重载。

java
import java.io.ByteArrayOutputStream;
import java.util.Collections;
import nexus.io.tio.utils.http.HttpDownloadUtils;

public class FileDownloader {
  public byte[] downloadPdf(String url) {
    ByteArrayOutputStream stream = HttpDownloadUtils.download(
        url, Collections.singletonMap("Accept", "application/pdf"));
    return stream.toByteArray();
  }
}

方法约定 ​

  • download(String remoteUrl):下载指定 HTTP 或 HTTPS 地址。
  • download(String remoteUrl, Map<String, String> headers):同时指定请求头,headers 可以为 null。
  • 返回值包含下载完成后的所有字节。该方法在内存中保存整个文件,适合大小可控的文件。
  • 读取失败、HTTP 错误状态或 TLS 握手失败时,以 RuntimeException 包装原始 IOException,调用方可以通过 getCause() 获取原因。方法没有声明受检的 IOException。
  • 正常完成或发生异常时都会释放 HTTP 连接;输入流读取结束后自动关闭。

HTTPS 与连接配置 ​

下载工具沿用应用和 JDK 的 HTTPS 信任及主机名校验设置,不更改全局 SSL 工厂或主机名校验器。在默认校验策略下,服务端证书需要受信任,证书标识需要与访问主机匹配。内部 CA 可以通过应用的信任库配置接入。

此方法没有单独设置连接或读取超时。需要明确超时、流式落盘或下载大小限制时,应选择支持这些设置的 HTTP 客户端,并由调用方管理流式读取。

下载前如需处理 URL 路径中的中文,可以使用 UrlUtils.encodeUrl,详见 URL 与流复制工具。

MIT Licensed