确定HTTP POST的大小

时间:2015-01-29 21:43:43

标签: android http

我正在编写一个应用程序,它将使用HTTP POST向服务器发送 id 纬度经度。该应用将使用用户数据。有没有办法在发送之前确定帖子的字节大小?

   @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    TextView tvLatLong = (TextView) findViewById(R.id.tvLatLong);
    LocationServices.startUpdates(this, tvLatLong);

    Button btnPost = (Button) findViewById(R.id.btnSend);
    btnPost.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            id = 1;
            latitude = LocationServices.getLatitude();
            longitude = LocationServices.getLongitude();

            Log.i("USER ID ::", id + "");
            Log.i("USER LATITUDE ::", latitude + "");
            Log.i("USER LONGITUDE ::", longitude + "");

            List<NameValuePair> list = new ArrayList<NameValuePair>();
            list.add(new BasicNameValuePair("keyId", id + ""));
            list.add(new BasicNameValuePair("latitude", latitude + ""));
            list.add(new BasicNameValuePair("longitude", longitude + ""));

            post(list);
        }
    });


}

private void post(List<NameValuePair> list) {
    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost("http://dmark3.apsu.edu");

    try{
        post.setEntity(new UrlEncodedFormEntity(list));


        HttpResponse response = client.execute(post);

        Log.i("HTTP RESPONSE :: ", response.toString());
    } catch (Exception e) {
        e.printStackTrace();
    }


}

以上是代码。

1 个答案:

答案 0 :(得分:2)

实际上没有直接的方法来测量发送到服务器的http请求的大小 - 主要是因为整个请求没有在程序内部组装(这是你计算请求大小的地方)。将会有其他标头添加到您的请求中,这些标头是HTTP协议的一部分。此外,由于证书等原因,HTTPS使流程复杂化。

这里有一个答案(Calculate HTTPS POST Request size)讨论创建自己的自定义套接字工厂,它计算输出流的大小并保持大小的运行总计,但我不确定你是否想要走那条路。