Как явно отключить режим потоковой передачи для HTTP-соединений в Android?

Я нацеливаюсь на веб-службу REST с Android 4.0, используяHttpsURLConnection, Это прекрасно работает, если я не пытаюсьPOST что-то. Это соответствующий раздел кода:

   connection.setDoOutput(true);
   connection.setChunkedStreamingMode(0);

   ByteArrayOutputStream out = new ByteArrayOutputStream();
   serializeObjectToStream(out, object);
   byte[] array = out.toByteArray();
   connection.getOutputStream().write(array, 0, array.length);

Это вызывает следующее исключение:

   java.net.HttpRetryException: Cannot retry streamed HTTP body

Из отладки я понял, что выходной поток я получаю черезconnection.getOuputStream() имеет типChunkedOutputStream и, покопавшись в исходном коде Android, я понял, что если запрос нужно повторить (по какой-либо причине), он высовывается с вышеприведенным исключением, потому что выясняет, что этоnot используяRetryableOutputStream что он хочет там.

Теперь возникает вопрос: как заставить мой HttpsURLConnection возвращать такой RetryableOutputStream, или, скорее, как правильно предотвратить кодирование фрагментированных запросов? яthought Я сделал это уже сsetChunkedStreamingMode(0), но, видимо, это не тот случай ...

[edit]

Нет, реализацияjava.net.HTTPUrlConnection игнорирует потоковый режим 0 или ниже:

 public void setChunkedStreamingMode(int chunkLength) {
    [...]
    if (chunkLength <= 0) {
        this.chunkLength = HttpEngine.DEFAULT_CHUNK_LENGTH;
    } else {
        this.chunkLength = chunkLength;
    }
}

Ответы на вопрос(2)

Ваш ответ на вопрос