• 如何接收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));
        }
  • 相关阅读:
    java中取两位小数 但不要四舍五入
    从字符串中提取数字 java正则表达式
    SQL实现 列转行(MySQL中)
    sql如何根据时间取出最新的数据记录
    动画 很精辟的
    week 与 strong区别 精辟的解释
    The executable was signed with invalid entitlements新设备run出现这个问题
    在iOS中创建静态库
    网址
    nginx单机1w并发设置
  • 原文地址:https://www.cnblogs.com/4AMLJW/p/handleAppRequest20200526164820.html
Copyright © 2020-2023  润新知