У меня есть веб-сервис, способный возвращать PDF файлы двумя способами:Потребляйте JSON/Base64 закодированный файл в Android/Java
RAW: Файл просто включен в теле ответа. Например:
HTTP/1.1 200 OK
Content-Type: application/pdf
<file_contents>
JSON: Файл кодируется (Base 64) и служил в качестве JSON со следующей структурой:
HTTP/1.1 200 OK
Content-Type: application/json
{
"base64": <file_contents_base64>
}
Я хочу, чтобы иметь возможность потреблять как услуги по Android
/Java
с помощью следующей архитектуры:
// Get response body input stream (OUT OF THE SCOPE OF THIS QUESTION)
InputStream bodyStream = getResponseBodyInputStream();
// Get PDF file contents input stream from body stream
InputStream fileStream = getPDFFileContentsInputStream(bodyStream);
// Write stream to a local file (OUT OF THE SCOPE OF THIS QUESTION)
saveToFile(fileStream);
в первом случае (RAW), тело ответа будет сам файл. Это означает, что реализация getPDFFileContentsInputStream(InputStream)
метода тривиальна:
@NonNull InputStream getPDFFileContentsInputStream(@NonNull InputStream bodyStream) {
// Return the input
return bodyStream;
}
Вопрос заключается в том: , как реализовать метод getPDFFileContentsInputStream(InputStream)
для второго случая (JSON ответа)?
'byte [] encodedBytes = json.getBytes (" base64 "); byte [] decodedBytes = (новый BASE64Decoder()). decodeBuffer (encodedBytes); вернуть новый ByteArrayInputStream (decodedBytes); ' – AnixPasBesoin
проверить мой (отредактированный) комментарий в моем ответе. – ram