如何使用HTTPBuilder(HttpClient)下载文件?

时间:2012-11-28 08:26:51

标签: groovy httpbuilder

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

//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 的最佳方法是什么?

1 个答案:

答案 0 :(得分:4)

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

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

如果HttpBuilder存在奇怪的问题,那么您可以随时使用已经完全支持cookie的Apache HttpClient API

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

您可以在执行管理Cookie的请求时添加localContext。