Question

I need to download and save file. I'm trying to use HTTPBuilder because it has simple API and supports cookies. I have written following code:

//create new httpBuilder and set cookies
def httpBuilder = ...
def file = ...  
def inputStream = httpBuilder.get(uri: urlData.url, contentType: ContentType.BINARY)
FileUtils.copyInputStreamToFile(inputStream)
  1. How can I check that file is correctly downloaded (not only the part of the file)?
  2. For large files exception java.lang.OutOfMemoryError: Java heap space occurs on line def inputStream = httpBuilder.get... How can I solve it?
  3. May be it's not best choise to download files by HTTPBuilder. What is the best way to download file with cookies support?
Was it helpful?

Solution

Have you tried HttpBuilder GET request with custom response-handling logic:

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

If HttpBuilder has problems which is strange then you can always use the tried and true Apache HttpClient API which has full cookie support.

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

You can add a localContext when executing the request to manage cookies.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top