在安卓开发中,经常用到post表单提交数据到数据库,今写下记录,以供以后使用。
public class UploadTask extends AsyncTask<String, Integer, String>
{
@Override
protected void onPreExecute()
{
super.onPreExecute();
// 在onPreExecute()中我们让ProgressDialog显示出来
//progressDialog.show();
}
@Override
protected String doInBackground(String... params)
{
String url=server_data;
// TODO Auto-generated method stub
//POST閻ㄥ垊RL
HttpPost httppost=new HttpPost(url);
List<NameValuePair> param=new ArrayList<NameValuePair>();
param.add(new BasicNameValuePair("device_id", params[0]));
param.add(new BasicNameValuePair("temperature", params[1]));
param.add(new BasicNameValuePair("humidity", params[2]));
param.add(new BasicNameValuePair("gpsLotd", params[3]));
param.add(new BasicNameValuePair("gpsLatd", params[4]));
try {
httppost.setEntity(new UrlEncodedFormEntity(param,HTTP.UTF_8));
HttpResponse response=new DefaultHttpClient().execute(httppost);
if(response.getStatusLine().getStatusCode()==200){
result=EntityUtils.toString(response.getEntity());
DebugLogger.d("upload data", result);
}
else{
result=Integer.toString(response.getStatusLine().getStatusCode());
DebugLogger.d("upload data", result);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
result="fail exception";
}
result=result+": "+uploadFile();
// bytes=result;
return result;
}
@Override
protected void onProgressUpdate(Integer... values)
{
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(String resp)
{
super.onPostExecute(resp);
// 将doInBackground方法返回的byte[]解码成要给Bitmap
// 更新我们的ImageView控件
//imageView.setImageBitmap(bitmap);
// 使ProgressDialog框消失
//progressDialog.dismiss();
displayToast(resp);
}
}
利用安卓的asyntask,异步执行post。
执行时:
UploadTask gpsTask=new UploadTask();
//gpsTask.execute("2","1","1",,"gps",Float.toString(spGPS.longtitude),Float.toString(spGPS.altitude));
gpsTask.execute(device_id,Integer.toString(mTpmValue),Integer.toString(mHrmValue)
,gpsg.getLatitude(),gpsg.getLongitude());
记得在安卓 中添加网络访问权限。
网站服务器端,则和正常的处理表单提交数据代码相同。