Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android HttpClient:传输了多少数据?_Java_Android_Androidhttpclient - Fatal编程技术网

Java Android HttpClient:传输了多少数据?

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

我正在使用PHP脚本访问数据库中的数据

然而,如果您的计划不包括3G接入,数据传输可能会很昂贵。因此,如果周围没有Wifi,最好知道我的应用程序实际下载/上传/使用了多少

是否有一种方法可以确定上载(post参数)和下载(php脚本的字符串输出/响应)的字节数

正在使用的代码:

//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变量。