推荐安卓开发神器(里面有各种UI特效和android代码库实例)

客户端向服务器端发送数据,这里用到了两种,一种是在url中带参数,一种是json数据发送方式;

url带参数的写法:

url+/?r=m/calendar/contact_list&uid=3&&subscriptionslist[pageindex]=10&subscriptionslist[recordlimit]=10

从“&”符号之后一连串都是参数。

发送方式代码编写"

DefaultHttpClient httpClient = new DefaultHttpClient();        HttpPost httpPost = new HttpPost(HttpUtil.BASIC_URL                + HttpUtil.SUBSCRIPTION_URL);        try{            if (cookie != null) {               // httpClient.setCookieStore(LoginJsonUtil.cookie);                List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(2);                nameValuePair.add(new BasicNameValuePair("uid",                        uid));                nameValuePair.add(new BasicNameValuePair("subscriptionslist[pageindex]",                        subscriptionslist_pageindex));                nameValuePair.add(new BasicNameValuePair("subscriptionslist[recordlimit]",                        subscriptionslist_recordlimit));                httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));

传递参数使用nameValuePair。

如果使用cookie的话,使用上段代码中注释掉的部分

httpClient.setCookieStore(LoginJsonUtil.cookie);

使用json数据格式发送信息向服务器端:

HttpClient httpClient = new DefaultHttpClient();        try {            HttpPost httpPost = new HttpPost(BASIC_URL + url);            List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>();            JSONObject jsonObject = new JSONObject();            JSONObject jsonObject2 = new JSONObject();            jsonObject.put("uemail", userbean.getEmail());            jsonObject.put("password", userbean.getPassword());            jsonObject2.put("userbean", jsonObject);            nameValuePair.add(new BasicNameValuePair("jsonString", jsonObject                    .toString()));            Log.i("lifeweeker", jsonObject2.toString());            httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));

这里每个put的顺序我不清楚有没有规定,我是严格按照提供的前后顺序来组合json数据格式的。

前面我有用到android发送json数据;这里我想总结一下我用到的解析json数据格式的方式

json数据格式解析我自己分为两种;

一种是普通的,一种是带有数组形式的;

普通形式的:

服务器端返回的json数据格式如下:

{"userbean":{"Uid":"100196","Showname":"\u75af\u72c2\u7684\u7334\u5b50","Avtar":null,"State":1}}

分析代码如下:

// TODO 状态处理 500 200                int res = 0;                res = httpClient.execute(httpPost).getStatusLine().getStatusCode();                if (res == 200) {                                       HttpResponse httpResponse = httpClient.execute(httpPost);                    StringBuilder builder = new StringBuilder();                    BufferedReader bufferedReader2 = new BufferedReader(                            new InputStreamReader(httpResponse.getEntity().getContent()));                    String str2 = "";                    for (String s = bufferedReader2.readLine(); s != null; s = bufferedReader2                            .readLine()) {                        builder.append(s);                    }                    Log.i("cat", ">>>>>>" + builder.toString());JSONObject jsonObject = new JSONObject(builder.toString())                        .getJSONObject("userbean");                String Uid;                String Showname;                String Avtar;                String State;                Uid = jsonObject.getString("Uid");                Showname = jsonObject.getString("Showname");                Avtar = jsonObject.getString("Avtar");                State = jsonObject.getString("State");

带数组形式的:

服务器端返回的数据格式为:

{"calendar":    {"calendarlist":            [           {"calendar_id":"1705","title":"(\u4eb2\u5b50)ddssd","category_name":"\u9ed8\u8ba4\u5206\u7c7b","showtime":"1288927800","endshowtime":"1288931400","allDay":false},           {"calendar_id":"1706","title":"(\u65c5\u884c)","category_name":"\u9ed8\u8ba4\u5206\u7c7b","showtime":"1288933200","endshowtime":"1288936800","allDay":false}            ]    }}分析代码如下:// TODO 状态处理 500 200                int res = 0;                res = httpClient.execute(httpPost).getStatusLine().getStatusCode();                if (res == 200) {                                       HttpResponse httpResponse = httpClient.execute(httpPost);                    StringBuilder builder = new StringBuilder();                    BufferedReader bufferedReader2 = new BufferedReader(                            new InputStreamReader(httpResponse.getEntity().getContent()));                    String str2 = "";                    for (String s = bufferedReader2.readLine(); s != null; s = bufferedReader2                            .readLine()) {                        builder.append(s);                    }                    Log.i("cat", ">>>>>>" + builder.toString());                                       JSONObject jsonObject = new JSONObject(builder.toString())                            .getJSONObject("calendar");                    JSONArray jsonArray = jsonObject.getJSONArray("calendarlist");                    for(int i=0;i<jsonArray.length();i++){                        JSONObject jsonObject2 = (JSONObject)jsonArray.opt(i);                        CalendarInfo calendarInfo = new CalendarInfo();                        calendarInfo.setCalendar_id(jsonObject2.getString("calendar_id"));                        calendarInfo.setTitle(jsonObject2.getString("title"));                        calendarInfo.setCategory_name(jsonObject2.getString("category_name"));                        calendarInfo.setShowtime(jsonObject2.getString("showtime"));                        calendarInfo.setEndtime(jsonObject2.getString("endshowtime"));                        calendarInfo.setAllDay(jsonObject2.getBoolean("allDay"));                        calendarInfos.add(calendarInfo);                    }

总结,普通形式的只需用JSONObject ,带数组形式的需要使用JSONArray 将其变成一个list。

更多相关文章

  1. Android Studio 手动创建活动(Activity) 第一行代码 第二章
  2. Android刮刮卡效果实现代码
  3. Android判断当前网络是否可用--示例代码
  4. [Android] Android工程以jar包形式向第三方应用提供服务
  5. 【Android】Android 监听网络状态+源代码
  6. 【Android】代码实现模拟屏幕点击和键盘按键事件
  7. ProGuard代码混淆详细攻略

随机推荐

  1. Android(安卓)LocationManager 使用
  2. android音频、视频、拍照基础操作
  3. 如何去除launcher 上默认的 google searc
  4. Android简介
  5. 理解Android中垃圾回收日志信息
  6. Gradle(二) 项目结构
  7. Java工程中调用Android库出现“Stub!”错
  8. Android获取所在地城市名2
  9. android 包管理系统分析
  10. 转:Android下文件操作模式(含SDCard的读写)