`
407827531
  • 浏览: 1076421 次
  • 性别: 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 利用socket 发送Json数据demo

    在Android开发中,利用Socket发送Json数据是一种常见的网络通信方式,尤其在移动应用与服务器进行实时交互时。本文将深入探讨如何在Android中实现这一功能,包括Json数据格式的使用、Socket通信的基本原理以及实际的...

    JS调用Android方法,向Android方法传递json数据

    本文将深入探讨如何使用JavaScript调用Android的方法,并传递JSON数据,以实现两者之间的高效通信。 首先,我们需要了解`Android WebView`。WebView是Android系统提供的一种组件,它能够加载并显示网页内容,就像是...

    android之json和gson数据解析最完整的代码例子(包括各种样式的json数据)

    通过Gson库,我们能够轻松地处理JSON数据,无论是从网络接收,还是存储在本地。对于初学者来说,通过实践上述示例,可以更好地理解这些概念并应用于实际项目中。 以上就是关于“Android之json和gson数据解析最完整...

    android demo,json数据的处理,json字符串的发送和解析。

    这个“android demo”显然是一个展示如何在Android平台上处理JSON数据、发送JSON字符串以及进行JSON解析的示例项目。下面将详细阐述相关知识点。 一、JSON基础知识 1. JSON格式:JSON采用键值对的形式存储数据,键...

    Android开发之与服务器(jsp)发送、接受JSON数据

    本教程将聚焦于Android如何通过使用JSON数据格式与服务器(这里以JSP为例)进行通信。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易于阅读和编写,同时对机器解析和生成也非常高效,因此在...

    Android客户端与服务器端的json数据交互(内含大量知识点)

    4. **接收响应**:服务器返回的响应也可能包含JSON数据。使用InputStream读取响应内容,然后通过Gson或org.json库解析成Java对象。 5. **文件上传**:在文件上传场景中,需要将文件转换为二进制流,然后作为请求的...

    android接收json例子struts2Action返回json格式数据

    在提供的压缩包文件中,`android接收json字符串例子.rar`可能包含了一个Android项目示例,展示了如何在Android应用中发起HTTP请求并解析JSON数据。而`Struts2_JSON_Demo`可能是一个Struts2的项目,实现了返回JSON...

    android使用JSON进行网络数据交换(服务端、客户端)的实现

    以`HttpURLConnection`为例,发送一个POST请求到服务端并携带JSON数据: ```java URL url = new URL("http://yourserver.com/api"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn....

    Android向Java后台发送请求并返回Json数据

    本教程将详细讲解如何从Android客户端向Java后台发送请求,并接收返回的Json数据。 一、HTTP请求库的选择 在Android中,我们可以使用多种库来实现网络请求,如HttpURLConnection(原生API)、Volley、Retrofit、...

    Android与PHP通过JSON交互

    - Android端将JSON数据作为POST请求的Body发送。 - PHP端使用`file_get_contents("php://input")`读取POST数据,然后使用`json_decode()`解析JSON。 **四、PHP处理JSON数据** 在PHP中,我们依赖`json_encode()`和...

    Android JSON数据的封装及解析

    本教程将深入讲解如何在Android中对JSON数据进行封装和解析,以便于在应用程序中有效使用。 一、JSON基础知识 JSON是一种独立于语言的数据表示格式,它基于ECMAScript的一个子集。一个基本的JSON对象由键值对组成,...

    android-json-rpc

    5. **序列化与反序列化**:库内置了对JSON数据的序列化和反序列化支持,这意味着你可以直接传递Java对象作为请求参数或接收Java对象作为响应结果,无需手动处理JSON字符串。 6. **批处理请求**:对于需要同时发送多...

    android HTTP通信例子(json数据传递)

    在Android中,我们通常使用`org.json`库或者Gson库来处理JSON数据。 1. **设置网络权限**: 在AndroidManifest.xml中,添加`&lt;uses-permission&gt;`标签以获取网络访问权限: ```xml &lt;uses-permission android:name=...

    Android Http (Json) 服务器端和客户端通信

    2. **JSON数据解析**:客户端接收到服务器返回的JSON数据后,需要使用相应的库(如Gson或Jackson)来解析JSON字符串,转换为Java对象。这通常涉及将JSON数据映射到自定义的Java类上,以便于处理和展示。 3. **错误...

    android使用JSON进行网络数据交换(服务端、客户端)的实现_网页交互.zip

    1. **Java服务端**:如果你使用Spring框架,可以很容易地接收和处理JSON数据。创建一个Controller: ```java @PostMapping("/data") public ResponseEntity&lt;String&gt; handleData(@RequestBody JSONObject requestJson...

    Android访问php调取json数据

    在我们的案例中,主要关注的是接收服务器返回的JSON数据,因此http-mime可能用得较少。 实现步骤如下: 1. **添加依赖**:在Android项目中,需要在build.gradle文件中添加对应的依赖项,确保这些库能被项目所使用...

    php与Android用json进行数据交互

    同时,也会介绍Android端如何发起HTTP请求,获取并解析服务器返回的JSON数据。 #### 二、Android客户端实现 ##### 2.1 权限配置 首先,在AndroidManifest.xml文件中需要添加必要的权限声明,以便允许应用访问网络...

Global site tag (gtag.js) - Google Analytics