如何接收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));
    }
原文地址:https://www.cnblogs.com/4AMLJW/p/handleAppRequest20200526164820.html