博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android post数据到服务器端工具类(包括postjson字符串、键值对)
阅读量:5085 次
发布时间:2019-06-13

本文共 4537 字,大约阅读时间需要 15 分钟。

应用开发中出现这种需求,需要统计链接点击事件的记录,并在每次退出应用时向服务器上传本次使用应用过程中所有的事件记录。

首先将事件封装为一个实体类:

package com.wotlab.home.moneyplantairs.entity;import java.io.Serializable;import java.text.SimpleDateFormat;import java.util.Date;import android.content.Context;import android.net.sip.SipRegistrationListener;import android.telephony.TelephonyManager;public class EventEntity implements Serializable {    private String id;    private String imei;    private String time;    public EventEntity(Context context) {        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        Date curDate = new Date(System.currentTimeMillis());// 获取当前时间        String str = formatter.format(curDate);        this.time = str;        // 同时给事件的imei字段赋值        TelephonyManager tm = (TelephonyManager) context                .getSystemService(Context.TELEPHONY_SERVICE);        this.imei=tm.getDeviceId();    }    public String getTime() {        return this.time;    }    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getImei() {        return imei;    } }

其中的时间和IMEI字段是由系统自动赋值的。

之后添加时间处理类:(这里主要是事件的增添,将事件列表转换为需要的json格式)

package com.wotlab.home.moneyplantairs.utils;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;  import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import com.wotlab.home.moneyplantairs.entity.EventEntity;/*这个是使用最笨的方法,拼接处一个json类型的字符串,其实可以使用jsonArray,jsonObject进行转换*/public class StasticUtil {    private ArrayList
eventlist = new ArrayList
(); private static StasticUtil instance; private StasticUtil() { } public static StasticUtil getInstance() { if (instance == null) { instance = new StasticUtil(); } return instance; } public void addEvent(EventEntity event) { this.eventlist.add(event); } /* * public ArrayList
getEventlist() { return eventlist; } */ /* 将list数据转换成需要提交的json数据 */ public String converToJson() { JSONArray array = new JSONArray(); for (EventEntity event : this.eventlist) { JSONObject obj = new JSONObject(); try { obj.put("id", event.getId()); obj.put("time", event.getTime()); obj.put("imei", event.getImei()); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } array.put(obj); } System.out.println(array.toString()); return array.toString(); }}

之后就是json上传到doPost方法

自己之前的误区是post方法上传一定是通过key-value对的形式进行上传,其实post也可以单独上传一个json或者xml格式的数据,此时需要指定其contentType属性。

public int doPost(String stringUrl, String json) {        String result = null;        HttpPost post = new HttpPost(stringUrl);                 HttpResponse httpResponse = null;                try {            StringEntity entity=new StringEntity(json,HTTP.UTF_8);            entity.setContentType("application/json");   //上面的类型设置是关键             post.setEntity(entity);                        httpResponse = new DefaultHttpClient().execute(post);            return httpResponse.getStatusLine().getStatusCode() ;        } catch (Exception e) {            e.printStackTrace();            return 0;        }             }

 关于http协议的详细内容参见这篇博客:

如果是通过简直对的方法post数据到服务器,并且服务器端返回字符串结果,方法如下

public static String postData(String path,List
list){ try { HttpParams params = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(params, 6000); HttpConnectionParams.setSoTimeout(params, 6000); HttpPost httppost = new HttpPost(path); httppost.setParams(params); if (list != null) { httppost.setEntity(new UrlEncodedFormEntity(list, HTTP.UTF_8)); } Log.d("Req", path); URI uri = httppost.getURI(); System.out.println(uri); HttpResponse httpResp = new DefaultHttpClient().execute(httppost); if (httpResp.getStatusLine().getStatusCode() == 200) { String result = EntityUtils.toString(httpResp.getEntity()); LogUtil.d("Req", result); return result; } } catch (Exception e) { e.printStackTrace(); } return ""; }

 

转载于:https://www.cnblogs.com/bobodeboke/archive/2013/05/24/3096431.html

你可能感兴趣的文章
用OGRE1.74搭建游戏框架(三)--加入人物控制和场景
查看>>
转化课-计算机基础及上网过程
查看>>
android dialog使用自定义布局 设置窗体大小位置
查看>>
ionic2+ 基础
查看>>
互联网模式下我们更加应该“专注”
查看>>
myeclipse集成jdk、tomcat8、maven、svn
查看>>
查询消除重复行
查看>>
Win 10 文件浏览器无法打开
查看>>
HDU 1212 Big Number(C++ 大数取模)(java 大数类运用)
查看>>
-bash: xx: command not found 在有yum源情况下处理
查看>>
[leetcode]Minimum Path Sum
查看>>
内存管理 浅析 内存管理/内存优化技巧
查看>>
hiho1079 线段树区间改动离散化
查看>>
【BZOJ 5222】[Lydsy2017省队十连测]怪题
查看>>
第二次作业
查看>>
【input】 失去焦点时 显示默认值 focus blur ★★★★★
查看>>
Java跟Javac,package与import
查看>>
day-12 python实现简单线性回归和多元线性回归算法
查看>>
Json格式的字符串转换为正常显示的日期格式
查看>>
[转]使用 Razor 进行递归操作
查看>>