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 MVC5写.php路由匹配时的问题 ASP.NET MVC 4 在 .NET 4.0 与.NET 4.5 的專案範本差異
    asp.net mvc上传头像加剪裁功能介绍
    图片延迟加载实现
    c#中多线程访问winform控件的若干问题
    C# WinForm实现控件拖动实例介绍
    C# 实现对窗体(Form)换肤
    C#读写txt文件的两种方法介绍
    C#实现JSON序列化与反序列化介绍
    高效的VS调试技巧
    SQL 添加字段和默认值脚本
  • 原文地址:https://www.cnblogs.com/4AMLJW/p/handleAppRequest20200526164820.html
Copyright © 2011-2022 走看看