Получите размер ответа HTTP в Java

Это значением согласно Документация PHP .

По умолчанию, аргументы функции передаются значением (так, чтобы, если значение аргумента в функции изменяется, это не становилось измененным за пределами функции). Чтобы позволить функции изменять свои аргументы, они должны быть переданы ссылкой.

Для имения аргумента функции, всегда передаваемой ссылкой, предварительно ожидайте амперсанд ( & ) к имени аргумента в функциональном определении.


5
задан Charles Merriam 1 July 2010 в 06:19
поделиться

2 ответа

Я бы использовал commons-io CountingInputStream , который сделает всю работу за вас. Полный, но тривиальный пример:

public long countContent(URL feedurl) {
  CountingInputStream counter = null;
  try {
     HttpURLConnection con = (HttpURLConnection) feedurl.openConnection();
     counter = new CountingInputStream(con.getInputStream());
     String output = IOUtils.toString(counter);
     return counter.getByteCount();
  } catch (IOException ex) {
     throw new RuntimeException(ex);
  } finally {
     IOUtils.closeQuietly(counter);
  }
}
8
ответ дан 13 December 2019 в 22:10
поделиться

Вы можете расширить FilterInputStream , переопределив чтение () , read (byte [], int, int) и skip методы, чтобы после вызова формы super они обновляли счетчик с количеством прочитанных байтов.

Затем оберните входной поток, возвращаемый URLConnection , одним из них, и используйте оболочку вместо исходного потока. Когда вы закончите, вы можете запросить его счетчик оболочки.

Другие («ручные») подходы будут использовать такой инструмент, как YSlow для сбора статистики в браузере или Wireshark для проверки трафика в сети.

2
ответ дан 13 December 2019 в 22:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: