zoukankan      html  css  js  c++  java
  • 如何接收APP的请求,并且如何以json字符串的格式封装响应的数据,然后发送回APP

    首先,我们应该了解APP发送请求的数据格式:

    post请求一般以json格式,或者流的方式(比如图片 视频 文件 都是转为流再传输),还有一种是url中直接携带参数(例如get请求)

    controller层接收处理请求时,我这边处理请求是通过流的方式读取请求的数据,然后将获取的数据转换成json字符串,当做参数传递到实现层的方法中执行相关的业务逻辑处理。

    代码如下    /*     * 

         * @function 获取故障任务详情信息列表.
         * @author Liangjw  
         * @date 2020年5月24日16:40:57
         * @param request
         * @param response
         * @throws Exception
         */
        public void getFaultTaskInfosByTaskIds(HttpServletRequest request, HttpServletResponse response) throws Exception {
            response.setContentType("text/html;charset=UTF-8");
            HashMap<String, Object> map = new HashMap<String,Object>();
            List<DataRecord> faultTaskInfoList = new ArrayList<DataRecord>();            
            BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream(),"UTF-8"));
            String line = null;
            StringBuilder sb = new StringBuilder();
            while((line = br.readLine())!=null){
                sb.append(line);
            }               
            String reqData = sb.toString();
            if(reqData != null && !"".equals(reqData)) {
            /*JSONObject jsonObject = JSON.parseObject(reqData); */ //APP发送的任务id直接封装在body{}中,参数在第一层{},格式如:{"task_id":1001}
            /*JSONObject jsonObject = JSON.parseObject(JSON.parseObject(reqData).getString("data")); */ //app发送的任务id封装到一个data对象中,参数在第二{} ,格式如:{"data":{"task_id":1001}}
           List<JSONObject> taskIdlist = JSON.parseArray(JSON.parseObject(reqData).getString("data"), JSONObject.class); //app发送的任务id集封装到一个data数组对象中 ,参数在第二层{},格式如:{"data":[{"task_id:1001"},{"task_id":1002},...{"task_id":1009}]}
    if(!taskIdlist.isEmpty()) {
                    faultTaskInfoList = service.getFaultTaskInfosByTaskIds(taskIdlist);
                } 
            }
            if(faultTaskInfoList != null && faultTaskInfoList.size() > 0){
                map.put("data", faultTaskInfoList);
            }
            PrintWriter writer = response.getWriter();
            writer.write(JSONObject.toJSONString(map,SerializerFeature.DisableCircularReferenceDetect));
        }
  • 相关阅读:
    标定相关-一些资源
    论文基础-5几何知识
    论文基础-3微积分
    h5页面 判断网页是否由微信或qq内置浏览器打开
    Html5 页面后退并刷新
    h5 页面下拉刷新
    绑定点击事件 传参
    公众号做分享功能
    清微信缓存
    手机端适配
  • 原文地址:https://www.cnblogs.com/4AMLJW/p/handleAppRequest20200526164820.html
Copyright © 2011-2022 走看看