Не удается получить прогресс при загрузке файла http POST (Android)

Я занимаюсь разработкой приложения для Android, которое позволяет пользователю загружать файлы в такие службы, как Twitpic и другие. Загрузка POST выполняется без каких-либо внешних библиотек и работает просто отлично. Моя единственная проблема в том, что я не могу получить какой-либо прогресс, потому что все загрузки сделаны, когда яПолучать ответ, а не покапишу байты в выходной поток. Вот что я делаю:

URL url = new URL(urlString); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
conn.setDoInput(true); 
conn.setDoOutput(true); 
conn.setUseCaches(false); 
conn.setRequestMethod("POST"); 
conn.setRequestProperty("Connection", "Keep-Alive"); 
conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); 
DataOutputStream dos = new DataOutputStream(conn.getOutputStream());

Затем я записываю данные формы в dos, что сейчас не так важно. После этого я записываю данные самого файла (считывая из «in», который является InputStream данных, которые я хочу отправить):

while ((bytesAvailable = in.available()) > 0)
{ 
 bufferSize = Math.min(bytesAvailable, maxBufferSize);
 byte[] buffer = new byte[bufferSize];
 bytesRead = in.read(buffer, 0, bufferSize);
 dos.write(buffer, 0, bytesRead);
} 

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

in.close(); 
dos.flush(); 
dos.close(); 

Все это прекрасно работает, пока проблем нет. Моя проблема, однако, в том, что весь процесс до этого момента занимает около одной или двух секунд, независимо от размера файла. Сама загрузка, кажется, происходит, когда я читаю ответ:

DataInputStream inStream = new DataInputStream(conn.getInputStream());

Это занимает несколько секунд или минут, в зависимости от размера файла и скорости интернет-соединения. Мои вопросы сейчас: 1) Почему не происходит uplaod, когда я записываю байты в "dos"? 2) Как я могу получить прогресс, чтобы показать диалог прогресса во время загрузки, когда все это происходит одновременно?

/ РЕДАКТИРОВАТЬ: 1) Я установил Content-Length в заголовке, который немного меняет проблему, но никак не решает ее: теперь весь контент загружается после того, как последний байт записан в поток. Таким образом, это не меняет ситуацию, когда вы не можете отследить прогресс, потому что снова данные записываются сразу. 2) Я попробовал MultipartEntity в Apache HttpClient v4. Там у вас вообще нет OutputStream, потому что все данные записываются при выполнении запроса. Опять же, нет никакого способа добиться прогресса.

Есть ли кто-нибудь, кто имеет какую-либо другую идею, как получить процесс при загрузке нескольких частей / формы?