android发送/接收json数据(转)

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

url带参数的写法:

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

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

发送方式代码编写"

  1. DefaultHttpClient httpClient = new DefaultHttpClient();
  2. HttpPost httpPost = new HttpPost(HttpUtil.BASIC_URL
  3. + HttpUtil.SUBSCRIPTION_URL);
  4. try{
  5. if (cookie != null) {
  6. // httpClient.setCookieStore(LoginJsonUtil.cookie);
  7. List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(2);
  8. nameValuePair.add(new BasicNameValuePair("uid",
  9. uid));
  10. nameValuePair.add(new BasicNameValuePair("subscriptionslist[pageindex]",
  11. subscriptionslist_pageindex));
  12. nameValuePair.add(new BasicNameValuePair("subscriptionslist[recordlimit]",
  13. subscriptionslist_recordlimit));
  14. httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
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数据格式发送信息向服务器端:

  1. HttpClient httpClient = new DefaultHttpClient();
  2. try {
  3. HttpPost httpPost = new HttpPost(BASIC_URL + url);
  4. List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>();
  5. JSONObject jsonObject = new JSONObject();
  6. JSONObject jsonObject2 = new JSONObject();
  7. jsonObject.put("uemail", userbean.getEmail());
  8. jsonObject.put("password", userbean.getPassword());
  9. jsonObject2.put("userbean", jsonObject);
  10. nameValuePair.add(new BasicNameValuePair("jsonString", jsonObject
  11. .toString()));
  12. Log.i("lifeweeker", jsonObject2.toString());
  13. httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
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}}

分析代码如下:

  1. // TODO 状态处理 500 200
  2. int res = 0;
  3. res = httpClient.execute(httpPost).getStatusLine().getStatusCode();
  4. if (res == 200) {
  5. HttpResponse httpResponse = httpClient.execute(httpPost);
  6. StringBuilder builder = new StringBuilder();
  7. BufferedReader bufferedReader2 = new BufferedReader(
  8. new InputStreamReader(httpResponse.getEntity().getContent()));
  9. String str2 = "";
  10. for (String s = bufferedReader2.readLine(); s != null; s = bufferedReader2
  11. .readLine()) {
  12. builder.append(s);
  13. }
  14. Log.i("cat", ">>>>>>" + builder.toString());
  15. JSONObject jsonObject = new JSONObject(builder.toString())
  16. .getJSONObject("userbean");
  17. String Uid;
  18. String Showname;
  19. String Avtar;
  20. String State;
  21. Uid = jsonObject.getString("Uid");
  22. Showname = jsonObject.getString("Showname");
  23. Avtar = jsonObject.getString("Avtar");
  24. State = jsonObject.getString("State");
// 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");

带数组形式的:

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

  1. {"calendar":
  2. {"calendarlist":
  3. [
  4. {"calendar_id":"1705","title":"(\u4eb2\u5b50)ddssd","category_name":"\u9ed8\u8ba4\u5206\u7c7b","showtime":"1288927800","endshowtime":"1288931400","allDay":false},
  5. {"calendar_id":"1706","title":"(\u65c5\u884c)","category_name":"\u9ed8\u8ba4\u5206\u7c7b","showtime":"1288933200","endshowtime":"1288936800","allDay":false}
  6. ]
  7. }
  8. }
  9. 分析代码如下:
  10. // TODO 状态处理 500 200
  11. int res = 0;
  12. res = httpClient.execute(httpPost).getStatusLine().getStatusCode();
  13. if (res == 200) {
  14. HttpResponse httpResponse = httpClient.execute(httpPost);
  15. StringBuilder builder = new StringBuilder();
  16. BufferedReader bufferedReader2 = new BufferedReader(
  17. new InputStreamReader(httpResponse.getEntity().getContent()));
  18. String str2 = "";
  19. for (String s = bufferedReader2.readLine(); s != null; s = bufferedReader2
  20. .readLine()) {
  21. builder.append(s);
  22. }
  23. Log.i("cat", ">>>>>>" + builder.toString());
  24. JSONObject jsonObject = new JSONObject(builder.toString())
  25. .getJSONObject("calendar");
  26. JSONArray jsonArray = jsonObject.getJSONArray("calendarlist");
  27. for(int i=0;i<jsonArray.length();i++){
  28. JSONObject jsonObject2 = (JSONObject)jsonArray.opt(i);
  29. CalendarInfo calendarInfo = new CalendarInfo();
  30. calendarInfo.setCalendar_id(jsonObject2.getString("calendar_id"));
  31. calendarInfo.setTitle(jsonObject2.getString("title"));
  32. calendarInfo.setCategory_name(jsonObject2.getString("category_name"));
  33. calendarInfo.setShowtime(jsonObject2.getString("showtime"));
  34. calendarInfo.setEndtime(jsonObject2.getString("endshowtime"));
  35. calendarInfo.setAllDay(jsonObject2.getBoolean("allDay"));
  36. calendarInfos.add(calendarInfo);
  37. }
{"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。

时间: 2024-10-29 19:06:42

android发送/接收json数据(转)的相关文章

SpringMVC中controller接收Json数据

SpringMVC中controller接收Json数据 1.jsp页面发送ajax的post请求: function postJson(){ var json = {"username" : "imp", "password" : "123456"}; $.ajax({ type : "post", url : "<%=basePath %>ajaxRequest", co

android中对json数据的解析,并在listview中实际运用

android中对json数据的解析,并在listview中现实,下面是数据{"ziparea": "410100.0", "enddate": "2015-04-03 00:00:00", "ecertarea": "\u9053\u8def\u8d27\u7269\u8fd0\u8f93\u9a7e\u9a76\u5458", "ecertstate": &quo

ThinkPHP中使用ajax接收json数据的方法

本文实例讲述了ThinkPHP中使用ajax接收json数据的方法.分享给大家供大家参考.具体分析如下: 这里通过ThinkPHP+jquery实现ajax,扩展了下,写了个查询,前台代码如下: 首先需要引入jquery.js,主要代码如下: 1 function ajax(id,pic){ 2 3 //由于ThinkPHP不解析JavaScript里的ThinkPHP常量,所以需要先在这里定义. 4 5 var URL='__URL__'; 6 7 $.ajax({ 8 9 url: URL+

Android中解析Json数据

在开发中经常会遇到解析json的问题 在这里总结几种解析的方式: 方式一: json数据: private String jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]"; 解析jsonData的方法 try { //如果需要解析Json数据,首先要生成一个J

android开发之JSON数据解析

android开发之JSON数据解析 本博文主要讲述的是使用google的lib库gson解析JSON数据的方法,因为android自带的JSON数据解析器对只可以在android 3.0以上版本才能适用,如果需要使用gson,我们需要在项目中添加gson的lib库文件,然后add path.详细代码如下: MainActivyty.java: package com.example.analysisjson; import android.os.Bundle; import android.a

SpringMVC接收JSON数据遇到的问题

项目简单介绍: 后台用spring mvc + fastjson | gson 这里以fastjson为例 数据层是mybatis 数据库是sqlserver 2008(我是不建议用的,没办法) 1.通过spring接收json需要配置后台spring 配置文件,加入  <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJ

(转)获取 request 中用POST方式&quot;Content-type&quot;是&quot;application/x-www-form-urlencoded;charset=utf-8&quot;发送的 json 数据

request中发送json数据用post方式发送Content-type用application/json;charset=utf-8方式发送的话,直接用springMVC的@RequestBody标签接收后面跟实体对象就行了,spring会帮你自动拼装成对象,如果Content-type设置成application/x-www-form-urlencoded;charset=utf-8就不能用spring的东西了,只能以常规的方式获取json串了 方式一:通过流的方方式 [java] vie

PHP如何接收json数据

以前一直在写一些网站,很少涉及到接口的东西.最近公司在做一个平台,需要往接口上发送json数据.闲话少叙,直接上干货. 在php中可以通过如下方式获取: file_get_contents("php://input"); 分析: php做网页的表单提交 早年网页表单的提交,都是用$_POST获取请求参数,实际上在http请求头中是用kv值的形式存在,如: php在接收到这种请求的时候,php底层系统会将这种字符串解析并存放进$_POST变量中,所以在php中就可以通过$_POST获取这

Android解析服务器Json数据实例

Json数据信息如下: { "movies": [ { "movie": "Avengers", "year": 2012, "rating": 7.8, "duration": "141 min", "director": "Joss Whedon", "tagline": "A new age