Я в растерянности здесь. У меня есть API, который возвращает двоичные данные. Проблема в том, что при получении двоичных данных они немного отличаются от того, что было отправлено, что приводит к тому, что данные не используются.
Я пробовал в C# и Java. Последний фрагмент кода из Java:
private NanoHTTPD.Response response() throws IOException
{
byte[] data = readFileData(file); //this is a file with binary data, read into a byte array
return newChunkedResponse(NanoHTTPD.Response.Status.OK, "application/octet-stream", new ByteArrayInputStream(data) );
}
Клиент ожидает приложение / октет-поток. Я преобразовал в base64 перед отправкой и распечатал, чтобы сравнить с фактическими данными ответа. Сравнение двух показывает различия. Шестнадцатеричный дамп также показывает различия.
Hexdump
00000250 00 02 00 00 00 43 00 6b 0b 09 24 4 c a5 2b 3f af | ..... C. k .. $ L. + ?. |
00000250 00 02 00 00 00 43 00 6b 0b 09 24 4 c a5 2b 81 af | ..... C .k .. $ L. + .. |
90% данных, похоже, совпадают. Я не могу понять, почему некоторые данные меняются. Я пробовал разные кодировки: UTF-8, ANSI.
Любые идеи приветствуются.
Спасибо
Редактировать: я пробовал с и без кодировок, и я все еще получаю данные, отличные от источника.
Я только что попробовал ниже, и та же проблема.
byte[] data= Files.readAllBytes(Paths.get(filename));
return newFixedLengthResponse(NanoHTTPD.Response.Status.OK, "application/octet-stream", new ByteArrayInputStream(data), data.length);