`
407827531
  • 浏览: 1060431 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

android发送/接收json数据

 
阅读更多

推荐安卓开发神器(里面有各种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。

分享到:
评论

相关推荐

    Android Studio实现MQTT数据收发及数据处理

    在Android Studio实现MQTT对主题的订阅和数据的收发,以及将数据封装成对象传回MainActivity,方便进行数据处理,其操作信息在TextView中展示相关的数据。对相关的数据一目了然,同时,在页面中为物联网的开发提供了...

    Android使用Json与Asp.Net交互(上传/下载数据集)

    这是一个简单的在Android客户端连接Asp.Net进行上传或下载的示例,在Android客户端以psot形式发送请求到Asp.Net服务器端,服务器端接收到请求参数后判断是上传还是下载,并进行相应处理。 示例中传输的数据未实体类...

    在Android和PHP Web服务之间发送和接收JSON

    在Android和PHP之间通过PHP Web服务设置和获取数据

    Android-Receiving-JSON:Android接收JSON

    安卓 来自Web服务的JSON对象通过HttpGet方法在AlertDialog中返回。 同时,HttpPost方法使要发送的数据可用。 先进的REST客户端 可以从Chrome扩展程序“高级REST客户端”中检查应用程序是否正在运行或数据是否正确。

    android json请求的例子和jsp服务器的例子

    在android 上有时候需要通过json和服务器交换数据,但是有时没有服务器,不能真正的体会一下交换数据的过程. ...android端的例子包涵了发送json到服务器如何解析和接收json如何解析的内容 代码已经调试通过

    Android Studio实现智能聊天机器人,高分安卓课设,小白必看!

    ④ 图灵服务器接收到HTTP请求数据之后,返回JSON数据。 ⑤ 将获取到的JSON数据进行解析。 ⑥ 解析后的JSON数据封装并显示到界面中。 智能聊天机器人的界面设计模仿QQ手机聊天软件的界面样式和设计,为聊天者显示...

    CollegeNewClient:校园新闻客户端,用于接收-seivice-服务端发送的json数据并展现到客户端

    -client- 校园新闻客户端,用于接收-seivice-服务端发送的json数据并展现到客户端。

    浅谈Android客户端与服务器的数据交互总结

    本文总结了Android客户端与服务器进行交互时,采用RESTful API +Json的交互方式,针对不同的数据形式以及不同的解析方法,如有不足之处,欢迎指正。 温馨提示:本文适合有一定Android开发经验的人阅读,如有疑问,...

    Android开发案例驱动教程 配套代码

    17.2.1 Android内置的发送短信/彩信功能 450 17.2.2 自己编写发送文本内容的短信 452 17.2.3 自己编写接收文本内容的短信 458 17.2.4 自己编写发送二进制内容的短信 459 17.2.5 自己编写接收二进制内容的短信 ...

    安卓开发后台servlet接受数据

    安卓前端向服务端servlet发送get的请求。服务端以json的格式给客户端返回数据的信息。

    android 入门笔记

    13. JSON格式接收返回数据 13 14. 处理servlet中乱码 14 15. SharedPreferences 保存键值对数据 18 16. 数组方式构造下拉框 18 17. 用户登录例子: 19 18. 用户登录对话框 22 19. 下拉框 动态数据 24

    精通ANDROID 3(中文版)1/2

    11.1.3 SOAP、JSON和XML分析程序  11.1.4 处理异常  11.1.5 解决多线程问题  11.1.6 有趣的超时  11.1.7 使用HttpURLConnection  11.1.8 使用AndroidHttpClient  11.1.9 使用后台线程(AsyncTask)  ...

    Android代码-cordova调用安卓原生activity插件

    //sendData表示要从js端发送到原生activity的数据,需用json对象传输 var sendData = { id:10001, name:"Simon", age:28 }; window.cordova.plugins.activity.start("com.zlzkj.vendor.MyActivity",sendData,...

    智能手机系统发展的Android商城

    客户端接收到数据后,对JSON串进行解析,读取出其中有效的数据信息,添加进对应数据列表中,再在主线程进行UI的刷新。 此设计主要实现了基于Android的电子规则证据助手的应用的开发,该手机软件主要分为客户端和...

    Oauth1.0微博客户端

    基于Android系统的移动微博集成交互平台的设计与实现,用户通过手机或者PC来向微博开放平台服务器发送请求,微博服务器接收请求,并且返回XML格式或者JSON格式的数据给客户端。也就是说发送和接收都是基于字符流的,...

Global site tag (gtag.js) - Google Analytics