上传和下载
使用 HttpDownloadUtils 下载文件
HttpDownloadUtils.download 使用 HTTP GET 下载内容,返回内存中的 ByteArrayOutputStream。可以传入自定义请求头;不需要请求头时使用单参数重载。
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 与流复制工具。
