У меня была такая же проблема при тестировании моих POST с NanoHTTPD их получением.Действительно, HttpClient использует кодирование передачи по частям, которое NanoHTTPD не поддерживает.Это было сделано в моем случае, потому что двоичный файл был передан через InputStreamBody
, и поскольку он не может определить собственную длину контента (он просто отправляет обратно -1), клиент использует чанкованное кодирование.
Я переключилсяк использованию ByteArrayBody
для содержимого файла, и поскольку это и StringBody
могут предоставлять длины содержимого, запросы теперь не используют фрагментированное кодирование.
ByteArrayOutputStream baos = new ByteArrayOutputStream();
IOUtils.copy (fileInputStream, baos); // from Apache Commons IO, or roll your own
ContentBody filePart = new ByteArrayBody (baos.toByteArray(), fileName);
Конечно, если ваш файл огромен,загрузка всего этого в байтовый массив, как указано выше, может вызвать проблемы с памятью.