Длина фрагмента по умолчанию для Android HttpURLConnection.setChunkedStreamingMode()?
В документации HttpURLConnection.setChunkedStreamingMode() сказано, что если я укажу 0 в параметре, он будет использовать длину фрагмента по умолчанию, такую как:
conn.setChunkedStreamingMode(0);
Каково точное значение длины чанка по умолчанию? а что такое единица измерения параметра? в байтах?
1 ответ
Ваш вопрос вызвал у меня любопытство, поэтому я проверил некоторые вещи.
Каково точное значение длины чанка по умолчанию?
Здесь я обнаружил, что chunkLength является защищенной переменной класса HttpURLConnection, то есть он доступен только внутри самого класса или в подклассе. Поэтому я создал подкласс HttpURLConnection и попытался распечатать chunkLength.
class HttpTest extends HttpURLConnection {
protected HttpTest(URL url) {
super(url);
Log.d("CHUNKLENGTH", String.format("%d", this.chunkLength));
this.setChunkedStreamingMode(0);
Log.d("CHUNKLENGTH", String.format("%d", this.chunkLength));
}
@Override
public void disconnect() {
// TODO Auto-generated method stub
}
@Override
public boolean usingProxy() {
// TODO Auto-generated method stub
return false;
}
@Override
public void connect() throws IOException {
// TODO Auto-generated method stub
}
}
Называя это так
try {
HttpTest test = new HttpTest(new URL("http://www.google.com/"));
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Это были результаты
Исходя из этого, мы можем сделать вывод, что по умолчанию используется значение 1024
что такое единица измерения параметра?
По указанной вами ссылке упоминается, что
Небольшая длина фрагмента увеличивает количество байтов, которые должны быть переданы из-за заголовка в каждом фрагменте.
Я думаю, можно с уверенностью предположить, что вы должны указать количество байтов. По умолчанию 1024 также соответствует этим критериям