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 用一个实体类接收所有接口数据的主要内容,如果未能解决你的问题,请参考以下文章