我正在编写一个应用程序,它将使用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();
}
}
以上是代码。
答案 0 :(得分:2)
实际上没有直接的方法来测量发送到服务器的http请求的大小 - 主要是因为整个请求没有在程序内部组装(这是你计算请求大小的地方)。将会有其他标头添加到您的请求中,这些标头是HTTP协议的一部分。此外,由于证书等原因,HTTPS使流程复杂化。
这里有一个答案(Calculate HTTPS POST Request size)讨论创建自己的自定义套接字工厂,它计算输出流的大小并保持大小的运行总计,但我不确定你是否想要走那条路。