Я использую HTTPURLConnection для отправки строковых данных на сервер.
JSONObject postDataParams = new JSONObject();
postDataParams.put(key1,a1);
postDataParams.put(key2,a2)
Params = getPostDataString(postDataParams);
Где getPostDataString () равно
public String getPostDataString(JSONObject params) throws Exception {
StringBuilder result = new StringBuilder();
boolean first = true;
Iterator<String> itr = params.keys();
while(itr.hasNext()){
String key= itr.next();
Object value = params.get(key);
if (first)
first = false;
else
result.append("&");
result.append(URLEncoder.encode(key, "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(value.toString(), "UTF-8"));
}
return result.toString();
}
Я использую BufferedWriter для записи текста в поток вывода символов следующим образом:
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
writer.write(getPostDataString(postDataParams));
writer.flush();
writer.close();
os.close();
Я могу рассчитать общий размер запроса в байтах следующим образом:
int Total = Params.getBytes().length;
Моя проблема заключается в том, как рассчитать количество отправленных байтов, чтобы можно было рассчитать соотношение между ними и опубликовать соотношение с помощью onUpdateProgress ()
int ratio = (sentBytes*100)/(Total);
publishProgress(ratio);