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));
        }
  • 相关阅读:
    ASP.NET Web API中通过URI显示实体中的部分字段
    ASP.NET Web API中把分页信息放Header中返回给前端
    写一个针对IQueryable<T>的扩展方法支持动态排序
    Perl处理和收走子进程(退出状态码和wait)
    Perl多进程
    Perl信号处理
    大话西游之大圣娶亲中的至尊宝和紫霞仙子
    Perl List::Util模块用法详解
    Python面向对象:杂七杂八的知识点
    Python迭代和解析(5):搞懂生成器和yield机制
  • 原文地址:https://www.cnblogs.com/4AMLJW/p/handleAppRequest20200526164820.html
Copyright © 2011-2022 走看看