Рассчитать количество байтов, отправляемых BufferedWriter - PullRequest
0 голосов
/ 03 июня 2019

Я использую 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);
...