Android---利用android-async-http开源项目返回json数据

1.      javaEE中导包进行环境搭建

Android---利用android-async-http开源项目返回json数据_第1张图片

2.      web环境中利用Servlet进行json数据解析

1)  获取数据库中的数据进行封装

2)  List集合转换成一个json数据格式

3)  利用浏览器工具获取Content-Type

Android---利用android-async-http开源项目返回json数据_第2张图片

4)响应类型Json的数据

相关的代码:

//来自于数据库

      UserDaodaoImpl = newUserDaoImpl();

      List<User>entities = daoImpl.findAll();

      //List集合转换成一个json的数据格式

      JSONArrayjsonArray = JSONArray.fromObject(entities);

      //响应类型json的数据

      response.setContentType("application/json");

      response.getWriter().write(jsonArray.toString());

      response.getWriter().close();

3.      android中进行json数据的获取

1)  Android界面的实现,即activity_json.xml

利用<ListView></ListView>进行搭建

2)  导包,导入所要使用的Android-async-http的最新版本的jar

android-async-http-1.4.4.jar

当然还可以使用文件包,但是Android-async-http的最新版本的jar包更为方便

3)  利用android-async-http开源项目中的JsonHttpResponseHandler进行json数据的获取

4)  注意添加:<uses-permissionandroid:name="android.permission.INTERNET"/>

5)  调试bug

原因是:因为线程,主线程和子线程两个线程进行,主线程不能在子线程之前完成,因此出现线程bug

修改后的相关代码:

packagewww.csdn.net.lesson05_04_json;

 

importjava.util.ArrayList;

importjava.util.List;

 

importorg.apache.http.Header;

importorg.json.JSONArray;

importorg.json.JSONException;

importorg.json.JSONObject;

 

importandroid.app.Activity;

importandroid.os.Bundle;

importandroid.widget.ArrayAdapter;

importandroid.widget.ListView;

importandroid.widget.Toast;

 

importcom.loopj.android.http.AsyncHttpClient;

importcom.loopj.android.http.JsonHttpResponseHandler;

 

publicclass JsonActivity extends Activity {

 

   private ListView lv_users;

   @Override

   protected void onCreate(BundlesavedInstanceState) {

            super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_json);

            // http://localhost:8080/video/JsonServlet

 

            lv_users=(ListView)findViewById(R.id.lv_users);

            //M //initData本身在一个子线程中处理

            initData();        

   }

 

   private void initData() {

            // 访问服务器端获取json数据

            //访问服务器端的json数据

            AsyncHttpClient client=newAsyncHttpClient();

            Stringurl="http://172.16.237.105:8080/video/JsonServlet";

            Toast.makeText(this, "发送请求道服务器",Toast.LENGTH_LONG).show();

            client.get(url,newJsonHttpResponseHandler(){

 

                     @Override

                     public void onSuccess(intstatusCode, Header[] headers,

                                        JSONArrayresponse) {

                               // TODOAuto-generated method stub

                               super.onSuccess(statusCode,headers, response);

                               if(statusCode==200){

                                        //存储数据变量

                                        List<String>objects=new ArrayList<>();

                                        for(inti=0;i<response.length();i++){

                                                 try{

                                                           JSONObjectobj=response.getJSONObject(i);

                                                           //System.out.println("序号:"+obj.getInt("id")+"-姓名:"+obj.getString("name")+"-密码:"+obj.getString("pass")+"-"+obj.get("regDate"));

                                                           objects.add(obj.getString("name"));

                                                

                                                 }catch (JSONException e) {

                                                           //TODO Auto-generated catch block

                                                           e.printStackTrace();

                                                 }

                                        }

                                        //C控制层主要就是对数据处理

                                        ArrayAdapter<String>adapter=new ArrayAdapter<>(JsonActivity.this,android.R.layout.simple_expandable_list_item_1,objects);

                                        //设置显示的内容

                                        lv_users.setAdapter(adapter);//C空置

                               }

                     }

                    

            });

   }

}

你可能感兴趣的:(Android---利用android-async-http开源项目返回json数据)