How can I download file with HTTPBuilder (HttpClient)?
groovy, httpbuilder
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.
Problem
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) ``` - How can I check that file is correctly downloaded (not only the part of the file)? - For large files exception `java.lang.OutOfMemoryError: Java heap space` occurs on line `def inputStream = httpBuilder.get...` How can I solve it? - May be it's not best choise to download files by `HTTPBuilder`. What is the best way to download file with cookies support?