json模式的 Android 客户端与服务器端数据交互

json形式的 Android 客户端与服务器端数据交互???? Android 客户端与服务器端数据交互一、json封装数据????

json形式的 Android 客户端与服务器端数据交互

???? Android 客户端与服务器端数据交互

一、json封装数据

?????? 1、json数据有两种形式JSONArray,JSONObject其中JSONObject中封??

??????????? 装的是对象,JSONArray中是以数组的形式存储对象的,它里面包

??????????? 含的是许多的对象。

?????? 2、JSONObject处理处理一些简单实体类POJO或者map

????????????JSONArray处理一些数组集合类的使用

???????3、任何一个java对象对可以用fromObject()方法转成json格式的输出


二、客户端向服务器端发送数据

?????? 1、申明一个异步的http客户端请求

???????????? AsyncHttpClient client = new AsyncHttpClient();

?????? 2、请求参数

???????????? RequestParams pa = new RequestParams();
???????????? pa.put("id", id);
???????????? pa.put("partem", "json");

????????3、以post的形式将数据发送到服务器

???????????? client.post("http://10.0.2.2:8080/Trip/AllTrip_placeServlet", pa,
??????????????????? new JsonHttpResponseHandler() {
??????????????????????? @Override
??????????????????????? public void onFailure(Throwable e,
????????????????????????????? JSONObject/JSONArray errorResponse) {
?????????????????????????????????? super.onFailure(e, errorResponse);
???????????????????????????????}
?????????????????????? @Override
????????????????????? ?public void onSuccess(JSONArray/JSONObject response) {
????????????????????????????????? ?super.onSuccess(response);

??????????????????????????????????? //对象及直接使用,JSONArray就循环取出数据,

????????????????????????????????????? 封装到对象,将对象添加到list里面,以后就可以

????????????????????????????????????? 使用的所有的对象了

?????????????????????????????? }

?????????????注意:http://10.0.2.2:8080/Trip/AllTrip_placeServlet,中的10.0.2.2

???????????? 如果用android端的虚拟手机的话就用这个就行了,这样避免了每一

???????????? 次都换?ip地址,但是也可以用服务器端的ip地址,看个人爱好,至

???????????? 于用实机测试的话那就得将服务器的ip地址写在上面,比如说

?????????????192.168.XXX.XXX,当成功之后在onSuccess方法里面操作即可。

三、服务器端实现。

???????1、在上面给定的doPost方法里面接收参数

?????????????????? String id=request.getParameter("id");
???????????? String partem=request.getParameter("partem");

?????? 2、调用其他的类实现访问数据库操作,实现想要的操作

???????????? 增删改查数据库数据

?????? 3、当数据库的数据库取回来之后,或者是完成相应的操作得到相应的

????????????回应之后,需将数据传送到客户端。

??????????? if(partem.equals("json")){
????????????????? JSONArray json=JSONArray.fromObject(list);
??????????????????response.setContentType("application/json");
???????????????? ?response.setCharacterEncoding("utf-8");
????????????????? response.getWriter().write(json.toString());
??????????? }?

??????????? //此处封装的是list,如果是的单个的对象的话,则可以用

???????????????? JSONObject json=JSONObject.fromObject(对象);

???????4、客户端只需在onSuccess方法里面接收数据,操作即可。

?

四、总的来说需区别json封装的是对象还是数组,封装只需调用fromObject.