android-async-http开源项目对服务器端返回JSON数据的处理

一,服务器返回JSONObject类型的值

private void AsyncHttpClient_demo2(String userName, String userPass) {
        AsyncHttpClient client = new AsyncHttpClient();  
        String url = "http://192.168.1.1:8080/Server/loginServlet";
        // 创建请求参数的封装的对象
        RequestParams params = new RequestParams();
        // 设置请求的参数名和参数值
        params.put("username", userName);
        // 设置请求的参数名和参数
        params.put("userpass", userPass);  
        //Toast.makeText(LoginActivity.this, "发送请求到服务器", Toast.LENGTH_LONG).show();  
        client.get(url,params, new JsonHttpResponseHandler() {  
            // 返回JSONArray对象 | JSONObject对象  
            @Override  
            public void onSuccess(int statusCode, Header[] headers,  
                    JSONObject response) {  
                super.onSuccess(statusCode, headers, response);  
                if (statusCode == 200) {  
                     // Toast.makeText(LoginActivity.this, "statusCode的值:L"+statusCode, 1).show();
                    //存储数组变量  
                Toast.makeText(LoginActivity.this, "返回值:"+response.toString(), 1).show();
                    //C控制层主要就是对数据处理  
                   // ArrayAdapter<String> adapter = new ArrayAdapter<String>(LoginActivity.this, android.R.layout.simple_list_item_1, objects);  
                    //设置显示的内容  
                 //   lv_users.setAdapter(adapter);// C空置  
                }  
            }  

        });  
    }

注意如上:public void onSuccess(int statusCode, Header[] headers, JSONObject response)方法里response参数类型应该根据返回值类型设定!


二,服务器返回JSONArray类型的值

    private void AsyncHttpClient_demo2(String userName, String userPass) {
        // TODO Auto-generated method stub
        AsyncHttpClient client = new AsyncHttpClient();  
        String url = "http://192.168.1.1:8080/Server/loginServlet";
        // 创建请求参数的封装的对象
        RequestParams params = new RequestParams();
        // 设置请求的参数名和参数值
        params.put("username", userName);
        // 设置请求的参数名和参数
        params.put("userpass", userPass);  
        //Toast.makeText(LoginActivity.this, "发送请求到服务器", Toast.LENGTH_LONG).show();  
        client.get(url,params, new JsonHttpResponseHandler() {  
            // 返回JSONArray对象 | JSONObject对象  
            @Override  
            public void onSuccess(int statusCode, Header[] headers,  
                    JSONArray response) {  
                super.onSuccess(statusCode, headers, response);  
                if (statusCode == 200) {  
                    //存储数组变量  
                //Toast.makeText(LoginActivity.this, "返回值:"+response.toString(), 1).show();
                    List<String> objects = new ArrayList<String>();  
                    for (int i = 0; i < response.length(); i++) {  
                        try {  
                            // 获取具体的一个JSONObject对象  
                            JSONObject obj = response.getJSONObject(i);  
                            objects.add((String) obj.get("rtmsg"));                     
                        } catch (JSONException e) {  
                            // TODO Auto-generated catch block  
                            e.printStackTrace();  
                        }  
                    }  
                    //listview加载适配器
                    ArrayAdapter<String> adapter = new ArrayAdapter<String>(LoginActivity.this, android.R.layout.simple_list_item_1, objects);  
                    //设置显示的内容  
                   lv_users.setAdapter(adapter);// C空置  
                }  
            }  

        });  
    }

三.不清楚服务器的回传值类型

这种情况先将response类型设成String类型,然后JsonHttpResponseHandler()也要改成StringHttpResponseHandler然后:

  1. 可以先做简单判断
  if(response.startWith("{")) result= new JSONObject(response); else result=new JSONArray(response);
  1. 也可以
try{
    result= new JSONObject(response);
}catch(JSONException e){
    result=new JSONArray(response);
}

具体代码不表
参考链接:

http://blog.csdn.net/lyy1104/article/details/27106971
http://blog.csdn.net/bruce_shan/article/details/50509909
官网:http://loopj.com/android-async-http/

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值