NoHttp封装--08 用一个实体类接收所有接口数据

Posted 安卓笔记侠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NoHttp封装--08 用一个实体类接收所有接口数据相关的知识,希望对你有一定的参考价值。

1.用户信息获取--bean实体类形式返回数据

①服务器端:

代码:

 1 protected void onHandler(HttpServletRequest request, HttpServletResponse response, PrintWriter printWriter) {
 2         Map<String, Object> map = new HashMap<String, Object>();
 3 
 4         try {
 5             String responseS = onResponse(request, response);
 6             map.put("data", responseS);// 字符串、json、url
 7             map.put("error", 1);// 1的时候代表服务端执行成功
 8             map.put("msg", "OK");
 9         } catch (Exception e) {
10             map.put("error", "-1");// error是-1的时候代表服务端有问题
11             map.put("msg", "服务端操作数据库出现异常");
12             map.put("data", "");
13         }
14 
15         JSONObject jsonObject = (JSONObject) JSON.toJSON(map);
16         printWriter.write(jsonObject.toJSONString());
17     }
18 
19     protected String onResponse(HttpServletRequest request, HttpServletResponse response) throws Exception {
20         Map<String, String> map = new HashMap();
21         map.put("userName", "甘传谱");
22         map.put("password", "123456");
23         return JSON.toJSONString(map);
24     }

json:

{"msg":"OK","data":"{\\"password\\":\\"123456\\",\\"userName\\":\\"甘传谱\\"}","error":1}

②客户端:

代码:

public class UserInfo {
    @JSONField(name = "userName")
    private String userName;

    @JSONField(name = "password")
    private String password;

    public UserInfo() {
        super();
    }

    public UserInfo(String userName, String password) {
        super();
        this.userName = userName;
        this.password = password;
    }

String url = "http://172.16.10.240:8080/noHttpServer/UserInfoServlet";
Request<BaseBean> request = new BaseRequest<BaseBean>(url, BaseBean.class);
request(0, request, callBack, false, true);

==============回调========================
BaseBean baseBean = response.get();
if (baseBean.isSuccess()) {
    UserInfo content = baseBean.parseData(UserInfo.class);
    String s = "用户名:" + content.getUserName() + ";密码:" + content.getPassword();
    mTvResult.setText(s);
} else {
    mTvResult.setText("业务处理层数据失败");
}

2.书籍信息--list集合形式返回数据

① 服务器端:

代码:

 1 protected void onHandler(HttpServletRequest request, HttpServletResponse response, PrintWriter printWriter) {
 2     Map<String, Object> map = new HashMap<String, Object>();
 3 
 4     try {
 5         String responseS = onResponse(request, response);
 6         map.put("data", responseS);// 字符串、json、url
 7         map.put("error", 1);// 1的时候代表服务端执行成功
 8         map.put("msg", "OK");
 9     } catch (Exception e) {
10         map.put("error", "-1");// error是-1的时候代表服务端有问题
11         map.put("msg", "服务端操作数据库出现异常");
12         map.put("data", "");
13     }
14 
15     JSONObject jsonObject = (JSONObject) JSON.toJSON(map);
16     printWriter.write(jsonObject.toJSONString());
17 }
18 
19 protected String onResponse(HttpServletRequest request, HttpServletResponse response) throws Exception {
20     Map<String, Object> map = new HashMap();
21     List<String> books = new ArrayList();
22     books.add("Java");
23     books.add("android");
24     books.add("ios");
25     books.add("C#");
26     books.add(".NET");
27     books.add("php");
28     map.put("books", books);
29     return JSON.toJSONString(map);
30 }

json:

{"msg":"OK","data":"{\\"books\\":[\\"Java\\",\\"Android\\",\\"iOS\\",\\"C#\\",\\".NET\\",\\"PHP\\"]}","error":1}

②客户端:

代码:

public class BooksInfo {

    @JSONField(name = "books")
    private List<String> list;

    public BooksInfo() {
        super();
    }

    public BooksInfo(List<String> list) {
        super();
        this.list = list;
    }

String url = "http://172.16.10.240:8080/noHttpServer/BookServlet";
Request<BaseBean> request = new BaseRequest<BaseBean>(url, BaseBean.class);
request(1, request, callBack, false, true);        

==========回调==================================

BaseBean baseBean = response.get();
if (baseBean.isSuccess()) {
    BooksInfo content = baseBean.parseData(BooksInfo.class);
    List<String> list =content.getList();

    String s="";
    for(int i=0;i<list.size();i++){
       s+= "书籍名字" +i + "" + list.get(i)+"\\n";
    }
    mTvResult.setText(s);
} else {
    mTvResult.setText("业务处理层数据失败");
}

 

完整代码:https://github.com/ganchuanpu/StarHttp

以上是关于NoHttp封装--08 用一个实体类接收所有接口数据的主要内容,如果未能解决你的问题,请参考以下文章

NoHttp封装--03 cookie

java接收参数和返回数据实体类封装1

NoHttp封装--06 NoHttp之队列队列优先级

DTO对象

NoHttp封装--01

实体类作用封装与面向对象思想