2014-10-06 2 views
0

Получение выше ошибки при попытке загрузки больших объемов данных с помощью HttpGetНедостаточно системных ресурсов для завершения запрошенных услуг

String uri = ""; 
getMethod = executeGet(uri); 
httpClient.executeMethod(getMethod); 
InputStream istream = getMethod.getResponseBodyAsStream(); 
byte[] data = IOUtils.toByteArray(istream); 
FileUtils.writeByteArraytoFile(new File("xxx.zip"),data) 
+0

Пожалуйста, отформатируйте свой код, когда задаете вопрос. –

+0

, в котором строка точно выполняет ошибку? –

ответ

1

Вы используете временный массив байтов, которые могут быть причиной проблемы. Вы можете напрямую писать содержимое потока в свой файл.

String uri = ""; 
getMethod = executeGet(uri); 
httpClient.executeMethod(getMethod); 
InputStream istream = getMethod.getResponseBodyAsStream(); 
IOUtils.copy(istream, new FileOutputStream(new File("xxx.zip")); 
1

Вы читаете весь отклик на byte[] (память). Вместо этого вы могли бы передавать результат, прочитав его с istream с чем-то похожим,

File f = new File("xxx.zip"); 
try (OutputStream os = new BufferedOutputStream(new FileOutputStream(f));) { 
    int c = -1; 
    while ((c = istream.read()) != -1) { 
     os.write(c); 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
}