Как загрузить HttpResponse в файл?
мое приложение для android использует API, который отправляет составной HTTP-запрос. Я успешно получаю ответ так:
post.setEntity(multipartEntity.build());
HttpResponse response = client.execute(post);
ответ-это содержимое файла электронной книги (обычно epub или mobi). Я хочу записать это в файл с указанным путем, давайте скажем " / sdcard / test.формат epub."
файл может быть до 20 Мб, поэтому ему нужно будет использовать какой-то поток, но я просто не могу обернуть вокруг него голову. Спасибо!
2 ответов
ну это простая задача, вам нужен WRITE_EXTERNAL_STORAGE
разрешение использовать.. затем просто получить InputStream
InputStream is = response.getEntity().getContent();
создайте FileOutputStream
FileOutputStream fos = new FileOutputStream(new File(Environment.getExternalStorageDirectory(), "test.epub"))
;
и читать из is и писать с fos
int read = 0;
byte[] buffer = new byte[32768];
while( (read = is.read(buffer)) > 0) {
fos.write(buffer, 0, read);
}
fos.close();
is.close();
Edit, проверьте наличие tyoo
во-первых, это метод:
public HttpResponse setHTTPConnection() throws IOException, NullPointerException, URISyntaxException {
HttpClient client = HttpClientBuilder.create().build();
HttpRequestBase requestMethod = new HttpGet();
requestMethod.setURI(new URI("***FileToDownlod***"));
BasicHttpContext localContext = new BasicHttpContext();
return client.execute(requestMethod, localContext);
}
второй-это фактический код:
File downloadedFile = new File("filePathToSave");
HttpResponse fileToDownload = setHTTPConnection();
try {
FileUtils.copyInputStreamToFile(fileToDownload.getEntity().getContent(), downloadedFile);
} finally {
fileToDownload.getEntity().getContent().close();
}
пожалуйста, не забудьте изменить "filePathToSave " куда сохранить файл и "FileToDownlod " откуда загрузить соответственно.
"filePathToSave" где вы хотите сохранить файл, если вы решите сохранить это локально, то вы можете просто указать на рабочий стол, но не забудьте дать имя вашему файлу, как " / Users/admin/Desktop / downloaded.pdf " (в Mac).
"FileToDownlod " находится в виде URL e.g"https://www.doesntexist.com/sample.pdf"
не паникуйте, так как вторая часть попросит объявить в предложении throws или поймать несколько исключений. Этот кусок кода был для конкретной цели, пожалуйста, настроить для ваши собственные потребности.