Java Android HttpClient:传输了多少数据?
我正在使用PHP脚本访问数据库中的数据 然而,如果您的计划不包括3G接入,数据传输可能会很昂贵。因此,如果周围没有Wifi,最好知道我的应用程序实际下载/上传/使用了多少 是否有一种方法可以确定上载(post参数)和下载(php脚本的字符串输出/响应)的字节数 正在使用的代码:Java Android HttpClient:传输了多少数据?,java,android,androidhttpclient,Java,Android,Androidhttpclient,我正在使用PHP脚本访问数据库中的数据 然而,如果您的计划不包括3G接入,数据传输可能会很昂贵。因此,如果周围没有Wifi,最好知道我的应用程序实际下载/上传/使用了多少 是否有一种方法可以确定上载(post参数)和下载(php脚本的字符串输出/响应)的字节数 正在使用的代码: //http post try { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(ur
//http post
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
httppost.setEntity(new UrlEncodedFormEntity(arguments));
HttpResponse httpresponse = httpclient.execute(httppost);
HttpEntity entity = httpresponse.getEntity();
is = entity.getContent();
Log.e("log_tag", "connection success ");
} catch(Exception e) {
Log.e("log_tag", "Error in http connection "+e.toString());
}
使用getEntity().getContentLength()
获取HTTP请求和响应中的HTTP消息大小。并在SharedReferences
中保存consumed
属性,以便在另一个会话中恢复该属性
代码如下所示:
static long consumed = 0;
//http post
long consumedNow = 0;
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
httppost.setEntity(new UrlEncodedFormEntity(arguments));
consumedNow += httppost.getEntity().getContentLength();
HttpResponse httpresponse = httpclient.execute(httppost);
HttpEntity entity = httpresponse.getEntity();
is = entity.getContent();
consumedNow += httpresponse.getEntity().getContentLength();
Log.e("log_tag", "connection success ");
} catch(Exception e) {
Log.e("log_tag", "Error in http connection "+e.toString());
} finally {
consumed += consumedNow;
SharedPreferences sp = context.getSharedPreferences("preferences", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putLong("consumed", value);
editor.commit();
}
嗯,我没有使用HttpURLConnection。我发布了我在上面使用的代码。有什么想法吗?非常感谢。消费到底能支撑什么?字节数还是什么?是的,字节数。使用:转换为可读格式,您可以将使用的数据保存在SharedReferences中(以在不同的用户会话中恢复)。好的。但这怎么可能呢?我得到一个688个字符长的字符串作为响应。这只有2个字节?这可能吗?我不习惯HttpClient,也没有测试代码,但您的http服务器可能没有发送内容长度填充的内容。因此,请尝试在读取内容后调用getContentLength,或者在读取时获取内容并增加consumedNow变量。