Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
Android 计算http开销和头_Android_Http_Tcp - Fatal编程技术网

Android 计算http开销和头

Android 计算http开销和头,android,http,tcp,Android,Http,Tcp,我想知道,在通过AndroidHttpClient get/post请求请求数据时,是否有人可以帮助我计算开销 我为什么问? 最近开发的应用程序在计算有效负载和互联网提供商统计数据时显示了不同的流量使用情况。 简单地说,我的应用程序发送/接收的所有数据都是6MB,但提供商显示为16。超过200% 由于所有通信都是通过一个函数完成的,所以我可以跟踪所有有效负载大小,而额外的大小必须是开销。但它真的有那么大,还是我错过了什么? 以下是一个函数: public byte[] get(final Str

我想知道,在通过AndroidHttpClient get/post请求请求数据时,是否有人可以帮助我计算开销

我为什么问? 最近开发的应用程序在计算有效负载和互联网提供商统计数据时显示了不同的流量使用情况。 简单地说,我的应用程序发送/接收的所有数据都是6MB,但提供商显示为16。超过200%

由于所有通信都是通过一个函数完成的,所以我可以跟踪所有有效负载大小,而额外的大小必须是开销。但它真的有那么大,还是我错过了什么? 以下是一个函数:

public byte[] get(final String url, int timeout) throws ClientProtocolException, IOException {

        URI uri;
        try {
            uri = new URI(url);
        } catch (URISyntaxException e) {
            lastError = ERROR_URL;
            e.printStackTrace();
            return null;
        }

        out += uri.toString().length();

        final HttpGet get = new HttpGet(uri);
        HttpConnectionParams.setSoTimeout(httpParameters, timeout);
        HttpConnectionParams.setConnectionTimeout(httpParameters, timeout);
        get.setParams(httpParameters);

        HttpResponse responce;
        final long st = System.currentTimeMillis();
        responce = client.execute(get, localContext);
        ping = (int) (System.currentTimeMillis() - st);

        InputStream is = responce.getEntity().getContent();

        byte[] data = inputStreamToByteArray(is);
        responce.getEntity().consumeContent();
        in += data.length;
        lastError = ERROR_SUCCESS;

        return data;

    }
IPOverhead=26字节; TCPOverhead=20字节

现在HTTP也进来了,但是如何衡量它的开销呢


有什么想法吗?

HTTP的开销只是由状态行+标题组成。
使用Android的Apache
HttpResponse
可以获取状态行和标题(使用and,但以解析的方式,而不是原始文本)。状态行和标题都是统一定义的(分别由§6.1和§4.2定义),但它们可能有任意数量的(未解析)空白,所以我们只能大致确定这里的开销

除非使用另一个API或原始Android(这将需要实现自己的HTTP处理),否则您只能完成一半