3

我需要下载并保存文件。我正在尝试使用HTTPBuilder,因为它具有简单的 API 并支持 cookies。我写了以下代码:

//create new httpBuilder and set cookies
def httpBuilder = ...
def file = ...  
def inputStream = httpBuilder.get(uri: urlData.url, contentType: ContentType.BINARY)
FileUtils.copyInputStreamToFile(inputStream)
  1. 如何检查文件是否正确下载(不仅仅是文件的一部分)?
  2. java.lang.OutOfMemoryError: Java heap space线上出现大文件异常def inputStream = httpBuilder.get...怎么解决?
  3. 下载文件可能不是最好的选择HTTPBuilder。下载带有 cookie 支持的文件的最佳方式是什么?
4

1 回答 1

4

您是否尝试过使用自定义响应处理逻辑的 HttpBuilder GET 请求:

httpBuilder.get(uri: urlData.url, contentType: ContentType.BINARY) { 
   resp, inputStream ->
       FileUtils.copyInputStreamToFile(inputStream)
}

如果 HttpBuilder 有奇怪的问题,那么您总是可以使用经过验证的、真正的Apache HttpClient API,它具有完整的 cookie 支持。

HttpGet req = new HttpGet(url);
HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(req);
// validate response code, etc.
InputStream inputStream = response.getEntity().getContent();

您可以在执行请求时添加一个 localContext 来管理 cookie。

于 2012-12-09T23:59:44.807 回答