Я мог бы легко просто рассчитать время передачи и выполнить некоторые простые математические операции после ее завершения, чтобы определить, какова была скорость, но это создает плохой пользовательский опыт во время длительной загрузки или загрузки. Кто-нибудь знает, как определить скорость передачи запроса Commons HttpClient, пока он все еще обрабатывается?
Я не использовал HttpClient широко, поэтому может быть простой хук. Однако оказывается, что HttpConnection.getResponseInputStream() возвращает простой InputStream.
Чтобы добавить ловушку самостоятельно, вам нужно переопределить HttpConnectionManager и HttpConnection, чтобы вернуть оформленный поток, который отслеживает количество прочитанных байтов. Затем вы можете запустить второй поток, чтобы опросить этот поток и отобразить скорость передачи, или (лучше) создать поток с обратным вызовом каждые N байтов (лучше, потому что вам не нужно заботиться о параллелизме, и вы также можете установить N так что обратный вызов вызывается только для больших файлов).