code: public static long downloadFile(String url, File destFile, int timeout, StreamProgress streamProgress) {
  		if (StrUtil.isBlank(url)) {
  			throw new NullPointerException("[url] is null!");
  		}
  		if (null == destFile) {
  			throw new NullPointerException("[destFile] is null!");
  		}
  		final HttpResponse response = HttpRequest.get(url).timeout(timeout).executeAsync();
  		if (false == response.isOk()) {
  			throw new HttpException("Server response error with status code: [{}]", response.getStatus());
  		}
  		return response.writeBody(destFile, streamProgress);
  	}
docs: 下载远程文件
  
  @param url 请求的url
  @param destFile 目标文件或目录，当为目录时，取URL中的文件名，取不到使用编码后的URL做为文件名
  @param timeout 超时，单位毫秒，-1表示默认超时
  @param streamProgress 进度条
  @return 文件大小
  @since 4.0.4