工欲善其事,必先利其器。先给大家介绍3个我在做腾讯微博客户端开发过程中用到的3个工具
1:一个是sqllite的数据库管理工具,http://www.sqliteexpert.com/download.html
2:腾讯API测试工具http://open.t.qq.com/resource.php?i=3,4
3:腾讯API返回的都是json和xml的数据格式,在手机上一般用json,这是一个json字符串分析工具。
把返回的字符串贴在viewer中:
点击第一个Tab,
- 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)?{? ??
- ????????????????????/*? ?
- ?????????????????????*?当返回码为200时,做处理? ?
- ?????????????????????*?得到服务器端返回json数据,并做处理? ?
- ?????????????????????*?*/? ??
- ????????????????????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)?{? ??
- ????????????????????/*? ?
- ?????????????????????*?当返回码为200时,做处理? ?
- ?????????????????????*?得到服务器端返回json数据,并做处理? ?
- ?????????????????????*?*/? ??
- ????????????????????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());? ??
- ????????????????????/**? ?
- ?????????????????????*?这里需要分析服务器回传的json格式数据,? ?
- ?????????????????????*/? ??
- ????????????????????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。?
?
http://helloandroid.iteye.com/blog/1130952